相关疑难解决方法(0)

如何在构建期间将主机卷装入Dockerfile中的docker容器中

原始问题:如何在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)

share mount host docker

214
推荐指数
7
解决办法
18万
查看次数

标签 统计

docker ×1

host ×1

mount ×1

share ×1