原始问题:如何在Dockerfile中使用VOLUME指令?
修订:从下面的答案更新,所以我想解决的实际问题是 - 如何在构建期间将主机卷装入Dockerfile中的docker容器,即具有该docker run -v /export:/export功能docker build.
最新更新:请参阅新接受的答案,例如,v18.09中的Buildkit.
是的:有一个解决方案 - 摇杆,不是来自Docker,但现在摇杆已经停止,我将答案还原为"不可能".
更新:所以答案是"不可能".我可以接受它作为答案,因为我知道这个问题已在https://github.com/docker/docker/issues/3156上进行了广泛讨论.我可以理解,可移植性对于docker开发者来说是一个至关重要的问题; 但作为码头用户,我不得不说我对这个缺失的功能感到非常失望.让我通过前面讨论的引用来结束我的论点:" 我想使用Gentoo作为基本图像,但是一旦构建了图像,绝对不希望> 1GB的Portage树数据存在于任何层中.如果不是因为巨大的portage树必须在安装过程中出现在图像中,那么它可能会有一些不错的紧凑型容器. "是的,我可以使用wget或curl来下载我需要的任何内容,但事实上只是一个可移植性的考虑因素现在强迫我每次构建Gentoo基本图像时下载> 1GB的Portage树既不高效也不用户友好.此外,软件包存储库将始终位于/ usr/portage下,因此在Gentoo下始终是PORTABLE.我再一次尊重这个决定,但请允许我在同一时间表达我的失望.谢谢.
原始问题详情:
从
通过卷共享目录
http://docker.readthedocs.org/en/v0.7.3/use/working_with_volumes/
它表示数据卷功能"自Docker Remote API版本1以来已经可用".我的docker是版本1.2.0,但我发现上面文章中给出的示例不起作用:
# BUILD-USING: docker build -t data .
# RUN-USING: docker run -name DATA data
FROM busybox
VOLUME ["/var/volume1", "/var/volume2"]
CMD ["/usr/bin/true"]
Run Code Online (Sandbox Code Playgroud)
Dockerfile中通过VOLUME命令将主机挂载的卷挂载到docker容器中的正确方法是什么?
$ apt-cache policy lxc-docker
lxc-docker:
Installed: 1.2.0
Candidate: 1.2.0
Version table:
*** 1.2.0 0
500 https://get.docker.io/ubuntu/ docker/main amd64 Packages
100 …Run Code Online (Sandbox Code Playgroud) 我正在尝试了解以下DockerFile:
https://github.com/nfnty/dockerfiles/blob/master/images/arch-bootstrap/latest/Dockerfile
FROM nfnty/arch-mini:latest
.....
RUN install --directory --owner=root --group=root --mode=700 /var/lib/bootstrap/{,archive}
USER root
VOLUME ["/var/lib/bootstrap"]
ENTRYPOINT ["/opt/bootstrap/build.sh"]
Run Code Online (Sandbox Code Playgroud)
RUN正在创建目录/ var / lib / bootstrap / archive,在构建后,映像将永久具有此文件夹
当从容器创建容器时,它将具有文件夹“ / var / lib / bootstrap / archive”,因为它存在于映像中。
声明VOLUME / var / lib / bootstrap /有什么意义?
我可以在命令行中了解-v [host path]:[container:path]将主机文件夹安装在container文件夹中。
但是dockerfile中的Volumne是什么,尤其是在上述情况下。
好的,我正在显示一些我已经完成的测试:
-- trying to create a container with dockerfile above
i.e VOLUME ["/var/lib/bootstrap"]
hostsystem# docker run -it --entrypoint=/bin/bash nfnty/arch-bootstrap
[root@684120b46cfb /]# ls -al /var/lib/bootstrap/
total 12
drwx------ 3 root root 4096 Oct 18 …Run Code Online (Sandbox Code Playgroud)