docker volume 命令中使用的两个标志之间的确切区别是什么 -v
和 --volumes-from
.在我看来,他们正在做同样的工作,请考虑以下场景。
首先让我们创建一个名为 myvol
的卷使用命令:
$ docker volume create myvol
现在创建并运行一个名为 c1
的容器使用 myvol
并进入他的狂欢:$ 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
无法做到?
最佳答案
The point is if -v and --volumes-from are working the same way i.e. to share data between containers
-v
和 --volumes-from
工作方式不同,但与他们一起,你 可以 在容器之间共享数据。what --volumes-from can do that -v cannot do?
例如。它可以连接到另一个容器卷,而无需知道卷的命名方式并且您不指定路径。您可以为容器 ID 添加后缀,权限类似于
:ro
或 :rw
.更多详情here - 从容器(--volumes-from)部分挂载卷
另一个问题是什么
-v
可以做到--volumes-from
无法做到?例如。它可以挂载命名卷,您可以挂载主机目录或 tmpfs (这个你不能在容器之间共享)。在
--volume-from
您不能直接与主机共享数据。结论是:
--volume
的目的是与主机共享数据。 ( here you can find more use cases )。--volumes-from
的目的是为了在容器之间共享数据。他们俩一起工作得很好。
关于docker - Docker Volumes 中 -volume 和 -volumes-from 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58435359/