一个 docker 使用的小问题

2015-10-20 23:37:39 +08:00
 giskard

初次尝试使用 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:纯新手,上面的描述之中有概念不对的地方还请指出,谢谢大家.

3508 次点击
所在节点    Docker
4 条回复
MrGba2z
2015-10-20 23:55:33 +08:00
应该是你的 container 接触不到你 host 的磁盘文件
你可以把它复制到这个 container 的 filesystem 里
http://stackoverflow.com/questions/20813486/exploring-docker-containers-file-system
dalang
2015-10-21 00:03:54 +08:00
有两个方法

1. 定制一个自己的 docker image ,把 f1 f2 两个文件 ADD 到自己的 customized image
2. 把你的工作目录挂在到 docker container 里
owwlo
2015-10-21 01:23:21 +08:00
楼上提到的第二种方法:
&> docker run -v /folder/on/host:/dest/path/in/container ubuntu /usr/bin/paste f1 f2
giskard
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" 还是会报错.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/229673

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX