Dockerfile与docker-compose VOLUME

这个实验尝试使用这个Docker文件来构build一个容器:

FROM lambdalinux/baseimage-amzn:2016.09-000 COPY ./bundle /opt/bundle/ VOLUME /bundle 

然后在容器内部创build一个/opt/bundle/file.txt并在其中放置一些文本。 但是这个文件没有显示在主机上的bundle目录中,就像我在阅读后期望的一样。我应该在COPY / ADD还是卷的最后一段中包含我的代码 :

可能有些情况下你会同时使用两者。 您可以使用COPY使图像包含代码,并在开发过程中使用Compose文件中的卷来包含来自主机的代码。 该卷覆盖图像的目录内容。

Dockerfile VOLUME与docker-compose.yml VOLUME不一样吗? 如果是这样,在这种情况下,如何做到这一点,以便主机目录中的更改反映在容器目录中?

我还在主机bundle/play.txt上创build了一个文件,但没有出现在容器内/opt/bundle/...

dockerfile中的VOLUME指令创build一个挂载点,但最初只将其映射到Docker的内部数据目录。

为了将卷映射到主机文件系统,您需要指定主机上的哪个path应映射到卷。 您可以使用volumes参数在docker-compose文件中执行此操作。 (注意:您可以使用docker-compose创build卷,而无需在Dockerfile中声明它们。)

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