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

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

然后在容器内,创建一个 /opt/bundle/file.txt 并在其中放入一些文本。但是在阅读了 Should I include my code with COPY/ADD or a volume 最后一段后,该文件并没有像我预期的那样出现在主机的 bundle 目录中:



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

我还在主机 bundle/play.txt 上创建了一个文件,但没有显示在容器 /opt/bundle/...

最佳答案

dockerfile 中的 VOLUME instruction 创建了一个挂载点,但最初仅将其映射到 Docker 的内部数据目录。

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

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

关于Dockerfile 与 docker-compose VOLUME,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40567451/

10-16 12:22