FROM ubuntu:15.04
RUN mkdir -p /app/tina
RUN touch /app/tina/foo.txt
RUN echo "testing tina" > /app/tina/foo.txt
VOLUME /app/tina
CMD sh
根据Docker指南
该Dockerfile生成一个映像,该映像导致docker运行在/ app / tina上创建一个新的挂载点并将foo.txt文件复制到新创建的卷中
但是当我这样做
docker run --rm -it -v /tmp/foo:/app/tina imagename sh
ls /app/tina/
我在其中找不到foo.txt。
问题在于,使用方式将外部目录作为卷附加时,-v
实际上会执行绑定安装:/tmp/foo
目录已安装到/app/tina
容器的目录中。
在Linux中,当您挂载某些东西时,以前在挂载点(/app/tina
在您的情况下)中看到的所有文件都变得不可见。所以,当你安装/tmp/foo
(空目录)/app/tina
(包含foo.txt
),该foo.txt
文件将成为无形的,你看到的内容,/tmp/foo
在/app/tina
目录中,即没有什么。
你可以保证你会看到foo.txt
在/app/tina
的时候,你会卸载tmp/foo
从中:
[email protected]:/# ls /app/tina
[email protected]:/# umount /app/tina
[email protected]:/# ls /app/tina
foo.txt
但是,这仅在特权(docker run --privileged
)容器中有效(否则您将无法卸载/app/tina
)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句