将本地目录挂载到未作为VOLUME

时间:2017-06-05 17:58:04

标签: docker dockerfile

之间有什么区别:

  1. 将主机目录安装到容器路径中(该路径不作为卷公开),例如:
  2. docker run -v /host/directory:/container/directory my_image command_to_run

    Dockerfile

    my_image 不包括VOLUME ["/container/directory"]

    1. 将主机目录挂载到作为卷公开的容器路径中:
    2. docker run -v /host/directory:/container/directory my_image command_to_run

      Dockerfile

      my_image包括 VOLUME ["/container/directory"]

      我知道体积数据与容器生命周期无关。但是,由于我想从容器中处理我的本地数据,如果容器内的挂载点是卷,这会有什么不同吗?

1 个答案:

答案 0 :(得分:1)

如果将路径从主机安装到容器中,则没有区别。来自主机的文件系统将安装在容器内该目录的顶部。

列出卷并且未在图像中列出它之间的区别在于在未指定卷的情况下创建图像时docker的行为。当在图像上定义卷时,docker将创建一个“匿名”卷,您可以使用docker volume ls作为长uuid字符串。这些卷很少有用,因此我建议不要在图像中定义卷,而只是在docker run命令或docker-compose.yml定义中定义它们。

在图像中定义卷的缺点包括:

  1. Dockerfile或后代Dockerfile中的后续行可能无法更改此位置的内容。 Docker的行为因场景和版本而异,因此为了预测性,一旦在图像中定义了卷,我认为该目录不受限制。

  2. 创建匿名卷很难使用,并且可能会混乱文件系统。

  3. 如果您对更多细节感兴趣,我前一段时间就此主题发布了blog