首页 > 解决方案 > 我在实践中对 docker 卷使用的困惑

问题描述

我看到有些人定义了这样的卷(我只在下面放了部分 Dockefile 来清楚地解释我的问题):

WORKDIR /usr/src/app
COPY . . 
VOLUME . /usr/src/app

因此,在 VOLUME 行中,.表示上面定义的当前目录WORKDIR。然后,VOLUME 的第二部分是/usr/src/app。是公约吗?对我来说,这听起来像是两次定义为音量的相同路径。我误解了吗?

另一个问题是定义音量有什么好处/usr/src/app?在项目中进行更改时是否可以在同一图像的所有容器中反映出来的好处(因为COPY . .将项目文件夹复制到容器中)?

标签: dockerdocker-compose

解决方案


这似乎是一种冗余——在 Dockerfiles 中,VOLUME它只是将文件从映像复制到安装在该位置的卷的声明。它不能指定主机中的目录,只能在运行时完成。

VOLUME 可以采用多个参数,并在所有传递的位置声明卷 - 因此,如果您多次指定同一个目录,它应该没有实际效果,尽管列出了两个等效路径。

如果您在该行之后更改 WORKDIR 或在从该行构建的后续映像中更改可能会有所不同,因为仅在运行容器时才解析相对路径。


推荐阅读