一尘不染

在主机上的docker安装卷

docker

我已经能够成功使用以下卷在Docker容器之间共享文件夹

docker run -v /host/path:/container/path ...

但是我的问题是,这与VOLUME在Dockerfile中使用命令之间有什么区别

VOLUME /path

我正在使用带有VOLUME命令的图像,并且想知道如何与主机共享它。我已经使用-v上面的命令完成了此操作,但我不知道是否同时需要-v和和VOLUME


阅读 258

收藏
2020-06-17

共1个答案

一尘不染

VOLUME命令将在您的容器中安装一个目录,并将在该目录中创建或编辑的所有文件存储 在容器文件结构外部的 主机磁盘上,绕过联合文件系统。

这个想法是,您的卷可以在您的docker容器之间共享,并且只要存在引用它们的容器(正在运行或已停止),它们就会一直存在。

--volumes-from运行容器时,可以使用命令让其他容器安装现有卷(在容器之间有效地共享它们)。

VOLUME和之间的根本区别-v是:-v将来自操作系统的现有文件安装在Docker容器中,VOLUME并将在主机上 创建一个新的空卷
,并将其安装在容器中。

例:

  1. 您有一个定义了的Dockerfile VOLUME /var/lib/mysql
  2. 您构建Docker映像并对其进行标记 some-volume
  3. 您运行容器

然后,

  1. 您还有另一个要使用此卷的Docker映像
  2. 您使用以下命令运行docker容器: docker run --volumes-from some-volume docker-image-name:tag
  3. 现在您正在运行一个Docker容器,该容器将从中some-volume装入该卷/var/lib/mysql

注意:使用--volumes-from会将卷安装在卷位置上存在的任何位置上。即,如果您有东西/var/lib/mysql,它将被卷的内容替换。

2020-06-17