V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
giskard
V2EX  ›  Docker

一个 docker 使用的小问题

  •  
  •   giskard · Oct 20, 2015 · 4186 views
    This topic created in 3846 days ago, the information mentioned may be changed or developed.

    初次尝试使用 docker, 成功地 pull 了一个 ubuntu 镜像, docker run -it ubuntu /bin/bash 也运行起来了,但是,遇到一个问题: 以 paste 命令为例,假如说,我在 host 的当前工作目录下有两个文件 f1 和 f2, 现在我想调用 ubuntu 镜像里的 paste 命令将这两个文件拼接在一起,我试了运行

    docker run ubuntu /usr/bin/paste f1 f2

    结果是报错说找不到文件 f1 .
    那么问题来了,是否可能运行 image 里的某个命令来读取 host 下的某个文件作为命令的输入呢?如果可以,该怎么做? 还是说,docker 就不是用来干这个的?

    P.S:纯新手,上面的描述之中有概念不对的地方还请指出,谢谢大家.

    4 replies    2015-10-21 12:55:17 +08:00
    v2gba
        1
    v2gba  
       Oct 20, 2015   ❤️ 1
    应该是你的 container 接触不到你 host 的磁盘文件
    你可以把它复制到这个 container 的 filesystem 里
    http://stackoverflow.com/questions/20813486/exploring-docker-containers-file-system
    dalang
        2
    dalang  
       Oct 21, 2015   ❤️ 1
    有两个方法

    1. 定制一个自己的 docker image ,把 f1 f2 两个文件 ADD 到自己的 customized image
    2. 把你的工作目录挂在到 docker container 里
    owwlo
        3
    owwlo  
       Oct 21, 2015   ❤️ 1
    楼上提到的第二种方法:
    &> docker run -v /folder/on/host:/dest/path/in/container ubuntu /usr/bin/paste f1 f2
    giskard
        4
    giskard  
    OP
       Oct 21, 2015
    @dalang
    @owwlo 感谢, 已成功.
    我的完整的命令是这样的:
    docker run -v /home:/mnt ubuntu /usr/bin/paste /mnt/f1 /mnt/f2
    将 host 的 home 挂载到 container 的 /mnt 下, 然后,文件 f1 和 f2 也要写绝对路径, "/mnt/f1" 和 "/mnt/f2" 才行, 如果写成"/usr/bin/paste f1 f2" 还是会报错.
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2445 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 08:23 · PVG 16:23 · LAX 01:23 · JFK 04:23
    ♥ Do have faith in what you're doing.