Dockerfile与docker合成卷

Dockerfile与docker合成卷,docker,docker-compose,Docker,Docker Compose,此实验尝试使用以下Docker文件构建容器: FROM lambdalinux/baseimage-amzn:2016.09-000 COPY ./bundle /opt/bundle/ VOLUME /bundle 然后在容器内部,创建一个/opt/bundle/file.txt,并在其中放入一些文本。但是,在阅读了上一段之后,该文件并没有像我预期的那样显示在主机上的bundle目录中: 在某些情况下,您可能希望同时使用这两种方法。您可以让映像使用副本包含代码,并在开发期间使用Compose

此实验尝试使用以下Docker文件构建容器:

FROM lambdalinux/baseimage-amzn:2016.09-000
COPY ./bundle /opt/bundle/
VOLUME /bundle
然后在容器内部,创建一个
/opt/bundle/file.txt
,并在其中放入一些文本。但是,在阅读了上一段之后,该文件并没有像我预期的那样显示在主机上的bundle目录中:

在某些情况下,您可能希望同时使用这两种方法。您可以让映像使用副本包含代码,并在开发期间使用Compose文件中的卷包含来自主机的代码。卷覆盖映像的目录内容

Dockerfile卷与docker compose.yml的作用不一样吗?如果是这样,在这种情况下,如何才能使主机目录中的更改反映在容器目录中

我还在主机
bundle/play.txt
上创建了一个文件,但该文件没有显示在容器
/opt/bundle/…
中,dockerfile中的a创建了一个装载点,但最初仅将其映射到Docker的内部数据目录

为了将卷映射到主机文件系统,您需要指定主机上应该映射到卷的路径。您可以在docker compose文件中使用。(注意:您可以使用docker compose创建卷,而无需在docker文件中声明它们。)


请注意,当将目录从主机映射到容器时,主机上的目录内容将替换容器中的内容,反之亦然。

当我仅使用compose.yml卷定义时,是否可以省去dockerfile卷声明?@develop是,可以。事实上,在某些情况下可能更可取--请参阅。首先将卷声明放在docker文件中的原因是什么?@Gherman,因为docker文件早于docker-compose.yml,可以在没有docker-compose的情况下使用。