我已经能够成功使用以下卷在Docker容器之间共享文件夹
docker run -v /host/path:/container/path ...
但是我的问题是,这与VOLUME在Dockerfile中使用命令之间有什么区别
VOLUME
VOLUME /path
我正在使用带有VOLUME命令的图像,并且想知道如何与主机共享它。我已经使用-v上面的命令完成了此操作,但我不知道是否同时需要-v和和VOLUME。
-v
该VOLUME命令将在您的容器中安装一个目录,并将在该目录中创建或编辑的所有文件存储 在容器文件结构外部的 主机磁盘上,绕过联合文件系统。
这个想法是,您的卷可以在您的docker容器之间共享,并且只要存在引用它们的容器(正在运行或已停止),它们就会一直存在。
--volumes-from运行容器时,可以使用命令让其他容器安装现有卷(在容器之间有效地共享它们)。
--volumes-from
VOLUME和之间的根本区别-v是:-v将来自操作系统的现有文件安装在Docker容器中,VOLUME并将在主机上 创建一个新的空卷 ,并将其安装在容器中。
例:
VOLUME /var/lib/mysql
some-volume
然后,
docker run --volumes-from some-volume docker-image-name:tag
/var/lib/mysql
注意:使用--volumes-from会将卷安装在卷位置上存在的任何位置上。即,如果您有东西/var/lib/mysql,它将被卷的内容替换。