【发布时间】:2018-09-12 04:52:18
【问题描述】:
当一个 Dockerfile 包含 VOLUME 指令(比如)VOLUME [/opt/apache2/www, ...](希望这个路径在实际安装中存在),这意味着这个路径将被挂载到某个东西上(对吧?)。而且这个 VOLUME 指令是针对图像的,而不是针对它的一个实例(容器),而是针对每个实例。
无论如何,无论图像是否包含定义的 VOLUME,在启动容器时,运行命令都可以通过将本地主机路径映射到容器路径来创建卷。
docker run --name understanding_volumes -v /localhost/path1:/opt/apache2/www -v /localhost/path2:/any/container/path image_name
上面应该清楚地表明,虽然/any/container/path 没有在 Dockerfile 中定义为 VOLUME,但我们可以在运行容器时挂载它。
也就是说,这个 SOF 问题对此有所启发 - What is the purpose of defining VOLUME mount points within DockerFile rather than adhoc cmd-line -v?。这里提到了 VOLUME 指令的一个好处。也就是说,其他容器可以从中受益。使用--from-container(找不到docker run --help 的这个选项,不确定答案是否意味着--volumes-from)无论如何,其他容器可以以某种自动方式访问挂载点。伟大的。
我的第一个问题是,安装在容器 understanding_volumes 上的另一个卷路径 /any/container/path image_name 是否也可用于使用 --from-container 或 --volumes-from 的第二个容器(无论哪个选项正确)?
我的下一个问题是,是否使用 VOLUME 指令只是为了让其他容器链接到该路径 --> 即通过简单的链接使/opt/apache2/www 上的数据对其他容器可用。所以只是分享出来。或者是否有任何数据也可以提供给第一个容器。
【问题讨论】:
标签: docker containers dockerfile docker-volume docker-image