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

Has*_*war 5 docker docker-volume

docker volume 命令-v--volumes-from. 在我看来,他们正在做同样的工作,请考虑以下场景。

首先让我们创建一个myvol使用命令命名的卷:

$ docker volume create myvol
Run Code Online (Sandbox Code Playgroud)

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

$ docker run -it --name c1 -v myvol:/data nginx bash
Run Code Online (Sandbox Code Playgroud)

让我们test.txt在容器的挂载目录中创建一个文件:

root@766f90ebcf37:/# touch /data/test.txt
root@766f90ebcf37:/# ls /data
test.txt
Run Code Online (Sandbox Code Playgroud)

使用 -volume标志:

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

$ docker run -it --name c2 -v myvol:/data nginx bash
Run Code Online (Sandbox Code Playgroud)

正如预期的那样,新生成的容器c2也可以访问myvol

root@393418742e2c:/# ls /data
test.txt  
Run Code Online (Sandbox Code Playgroud)

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

创建使用容器c3中的卷命名的容器c1

$ docker run -it --name c3 --volumes-from c1 nginx bash
Run Code Online (Sandbox Code Playgroud)

这将导致同样的事情c3

root@27eacbe25f92:/# ls /data
test.txt
Run Code Online (Sandbox Code Playgroud)

关键是如果-v并且--volumes-from正在以相同的方式工作,即在容器之间共享数据,那么为什么它们是不同的标志,哪些--volumes-from可以做哪些-v不能做?

Rum*_*mid 8

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

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

什么 --volumes-from 可以做而 -v 不能做的事情?

例如,它可以连接到另一个容器卷,而无需知道卷如何命名并且您不指定路径。您可以使用:ro或等权限向容器 ID 添加后缀:rw。更多详细信息请参见此处-从容器安装卷 (--volumes-from)部分

另一个问题是哪些-v可以做,哪些--volumes-from不能做?
例如,它可以挂载命名卷,您可以挂载主机目录或tmpfs(这一点不能在容器之间共享)。您--volume-from无法直接与主机共享数据。

结论是:目的--volume是与主机共享数据。(在这里您可以找到更多用例)。
目的--volumes-from是在容器之间共享数据。
他们俩合作得很好。