Docker Volumes中-volume和-volumes-from之间的区别

时间:2019-10-17 14:48:50

标签: docker docker-volume

docker卷命令-v--volumes-from中使用的两个标志之间的确切区别是什么?在我看来,他们正在做相同的工作,请考虑以下情形。

首先,使用命令创建一个名为myvol的卷:

$ docker volume create myvol

现在创建并运行一个名为c1的容器,该容器使用myvol并进入bash:

$ docker run -it --name c1 -v myvol:/data nginx bash

让我们在容器的已安装目录中创建文件test.txt的方式为

root@766f90ebcf37:/# touch /data/test.txt
root@766f90ebcf37:/# ls /data
test.txt

使用-volume标志:

现在创建另一个名为c2的容器,该容器也使用myvol

$ docker run -it --name c2 -v myvol:/data nginx bash

如预期的那样,新生成的容器c2也可以访问myvol的所有文件

root@393418742e2c:/# ls /data
test.txt  

现在与--volumes-from做同样的事情

使用来自容器c3的卷创建名为c1的容器

$ docker run -it --name c3 --volumes-from c1 nginx bash

这将在c3中产生相同的结果:

root@27eacbe25f92:/# ls /data
test.txt

问题是,如果-v--volumes-from以相同的方式工作,即在容器之间共享数据,那么为什么它们是不同的标志以及--volumes-from可以做什么-v无法做到?

1 个答案:

答案 0 :(得分:2)

  

关键是-v和--volumes-from是否以相同的方式工作,即在容器之间共享数据

-v--volumes-from的工作方式不同,但是您可以 在容器之间共享数据。

  

-volumes-from可以执行-v无法执行的操作吗?

例如它可以连接到另一个容器卷,而无需知道卷的命名方式,并且您无需指定路径。您可以使用:ro:rw之类的权限向容器ID添加后缀。 更多详细信息here-从容器安装卷(--volumes-from)部分

另一个问题是 -v不能做什么--volumes-from
例如。它可以挂载命名卷,可以挂载主机目录或tmpfs(不能在容器之间共享的那个)。在--volume-from中,您不能直接与主机共享数据。

结论是:--volume的目的是与主机共享数据。 (here you can find more use cases)。
--volumes-from的目的是在容器之间共享数据。
他们俩在一起很好。