V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
giskard
V2EX  ›  Docker

一个 docker 使用的小问题

  •  
  •   giskard · 2015-10-20 23:37:39 +08:00 · 3490 次点击
    这是一个创建于 3312 天前的主题,其中的信息可能已经有所发展或是发生改变。

    初次尝试使用 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 条回复    2015-10-21 12:55:17 +08:00
    MrGba2z
        1
    MrGba2z  
       2015-10-20 23:55:33 +08:00   ❤️ 1
    应该是你的 container 接触不到你 host 的磁盘文件
    你可以把它复制到这个 container 的 filesystem 里
    http://stackoverflow.com/questions/20813486/exploring-docker-containers-file-system
    dalang
        2
    dalang  
       2015-10-21 00:03:54 +08:00   ❤️ 1
    有两个方法

    1. 定制一个自己的 docker image ,把 f1 f2 两个文件 ADD 到自己的 customized image
    2. 把你的工作目录挂在到 docker container 里
    owwlo
        3
    owwlo  
       2015-10-21 01:23:21 +08:00   ❤️ 1
    楼上提到的第二种方法:
    &> docker run -v /folder/on/host:/dest/path/in/container ubuntu /usr/bin/paste f1 f2
    giskard
        4
    giskard  
    OP
       2015-10-21 12:55:17 +08:00
    @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" 还是会报错.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5746 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 03:08 · PVG 11:08 · LAX 19:08 · JFK 22:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.