【问题标题】:What is the purpose of defining VOLUME mount points within DockerFile rather than adhoc cmd-line -v?在 DockerFile 中定义 VOLUME 挂载点而不是 adhoc cmd-line -v 的目的是什么?
【发布时间】:2015-10-15 12:36:21
【问题描述】:

我了解在 Dockerfile 中使用 VOLUME 命令会在容器中定义一个挂载点。

FROM centos:6
VOLUME /html

但是我注意到,如果没有那个 VOLUME 定义,仍然可以安装在那个 VOLUME 点上,而不管它是否定义它

docker run -ti -v /path/to/my/html:/html centos:6

在 dockerfile 中定义 VOLUME 挂载点的目的是什么?我怀疑这是为了可读性,以便人们可以阅读 Dockerfile 并立即知道要挂载的内容?

【问题讨论】:

    标签: docker dockerfile


    【解决方案1】:

    VOLUMEDockerfile 中使用的指令不允许我们进行主机挂载,即我们将主机操作系统中的目录挂载到容器中。

    但是,其他容器仍然可以使用 --from-container=<container name> 装载到容器的卷中,使用 Dockerfile 中的 VOLUMES 指令创建

    【讨论】:

      【解决方案2】:

      我了解在 Dockerfile 中使用 VOLUME 命令, 定义容器内的挂载点。

      这是不对的。在这种情况下,卷是为图像定义的,而不是为容器定义的。

      在 Dockerfile 中定义卷时,会为映像设置它,因此从该映像运行的每个容器都会定义该卷。

      如果您在命令行中定义卷(docker run -v ...),则该卷仅针对该特定容器定义。

      【讨论】:

      • gr8, 有点晚了... “当在 Dockerfile 中定义卷时,它是为图像设置的” 。如果没有使用 -v 将 VOLUME(在 Dockerfile 中定义)挂载到主机,Dockerfile 中的 VOLUME 指令对于该特定映像本身没有任何意义。正确的??是的,其他容器可以通过 --from-container 受益,但对于第一个容器,它仍然没有任何意义。对吧??
      猜你喜欢
      • 2018-09-12
      • 2016-04-20
      • 2017-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-15
      • 2021-03-10
      相关资源
      最近更新 更多