卷命令在Dockerfile中做什么?

卷命令在Dockerfile中做什么?,docker,dockerfile,Docker,Dockerfile,我很难理解VOLUME()的附加优势 在Dockerfile中,可以使用mkdir创建目录。一旦创建了目录,我们就可以处理它了。为什么要指定卷(装载)并分配给该目录?容量装载有什么优势?我试图理解这里没有音量我们会错过什么 对我来说,它看起来像一个冗余函数,但我可能错了。Dockerfile中的mkdir将仅在该容器中创建一个目录。卷可以位于主机上,也可以位于其他容器上,因此在容器被终止时仍然存在。当我们不想在容器被删除后丢失数据时,卷非常有用。配置文件、数据库数据等。因此,您可以将同一卷与全新

我很难理解VOLUME()的附加优势

在Dockerfile中,可以使用mkdir创建目录。一旦创建了目录,我们就可以处理它了。为什么要指定卷(装载)并分配给该目录?容量装载有什么优势?我试图理解这里没有音量我们会错过什么


对我来说,它看起来像一个冗余函数,但我可能错了。

Dockerfile中的
mkdir
将仅在该容器中创建一个目录。卷可以位于主机上,也可以位于其他容器上,因此在容器被终止时仍然存在。

当我们不想在容器被删除后丢失数据时,卷非常有用。配置文件、数据库数据等。因此,您可以将同一卷与全新的docker容器一起使用。如果您仅在DockFile中创建目录,则文件夹中的数据将与容器一起删除。

卷命令将指定容器中的装载点。此装载点将映射到主机上的某个位置,该位置在创建容器时指定,如果未指定,则从/var/lib/docker/volumes中创建的目录中自动选择

如果选择作为装载点的目录包含任何文件,则这些文件将复制到此卷中。与mkdir相比,它的优点是在容器终止后将文件持久保存到主机上的某个位置

似乎有人质疑为什么要使用VOLUME命令,因为它会创建匿名卷。匿名卷不再有太多用途,在卷命名之前,它基本上是Docker早期的产物。通常在创建容器时指定卷名:

docker容器运行-v我的卷:/data image\u标签


在本例中,/data是容器中的装载点,my volume是本地主机上的卷。如果运行此命令时我的卷不存在,则它将在本地主机上创建。

您知道什么是卷吗?它们与容器中的目录非常不同。卷非常有趣,毫无疑问,它们比绑定文件夹更有用。但我也想知道为什么要使用Dockerfile卷选项。它创建了一个匿名卷,那又怎样?如果您运行一个新容器,它将创建一个新卷,并且不会重用以前创建的卷。如果您想重用它,您必须docker检查容器,获取卷id并在您的run命令中重用它。。。最好第一次在run命令中创建命名卷。那么我们错过了什么?请注意,我只询问Dockerfile和run命令中的mount中的VOLUME。我还非常怀疑VOLUME命令是否有这么大的意义。我猜人们用它来记录界面——但实际上他们忽略了技术后果,这有时是有限的。事实上,当使用VOLUME语句时,您将永远无法在dockerfile的空间中添加文件。您总是需要使用外部卷-对于大多数用例来说,这是期望的结果。但是,在扩展Docker映像时,VOLUME命令会限制可以添加到映像中的文件。启动映像后,将无法访问添加到卷路径的所有文件。因此,有些人重写docker映像:我认为这是一个非常好的问题,我已经搜索了一段时间的答案。通常,卷的值是明确的,但无论图像是否声明卷,您都可以使用它们。因此,VOLUME关键字的意义是什么?我试图更直接地询问它,但它以基于意见的方式关闭。这仍然无法解释
VOLUME
命令的确切功能。您可以将卷装载到容器中并使用它,而无需在docker文件中指定它。可以使用
--volume
--mount
标志以及
docker run
装载主机目录。但是OP询问Dockerfile中的
指令。它的魅力是什么?可以使用
--volume
--mount
标志和
docker run
装载主机目录。但是OP询问Dockerfile中的
指令。它的魅力是什么?