我已经成功地能够使用以下命令在具有卷的 docker 容器之间共享文件夹
docker run -v /host/path:/container/path ...
但我的问题是这和使用有什么区别VOLUME
Dockerfile 中的命令
VOLUME /path
我使用的图像具有VOLUME
命令,我想知道如何与我的主机共享它。我已经使用了-v
上面的命令,但我不知道我是否需要-v
and VOLUME
.
The VOLUME
命令将在容器内安装一个目录,并将在该目录内创建或编辑的任何文件存储在主机磁盘上容器文件结构之外,绕过联合文件系统。
这个想法是,您的卷可以在 Docker 容器之间共享,并且只要有容器(正在运行或已停止)引用它们,它们就会一直存在。
您可以使用以下命令让其他容器挂载现有卷(在容器之间有效地共享它们):--volumes-from
运行容器时的命令。
之间的根本区别VOLUME
and -v
这是:-v
将从您的操作系统挂载现有文件到您的 docker 容器中,并且VOLUME
will 创建一个新的空卷在您的主机上并将其安装在容器内。
Example:
- 你有一个 Dockerfile 定义了
VOLUME /var/lib/mysql
.
- 您构建 docker 映像并对其进行标记
some-volume
- 您运行容器
进而,
- 您有另一个想要使用此卷的 docker 映像
- 您可以使用以下命令运行 docker 容器:
docker run --volumes-from some-volume docker-image-name:tag
- 现在您有一个正在运行的 docker 容器,其中的卷来自
some-volume
安装在/var/lib/mysql
注意:使用--volumes-from
将在该卷位置中存在的任何内容上安装该卷。也就是说,如果你有东西/var/lib/mysql
,它将被卷的内容替换。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)