Docker 卷中 -volume 和 -volumes-from 的区别
Difference between -volume and -volumes-from in Docker Volumes
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
做同样的事情
正在使用容器 c1
中的卷创建名为 c3
的容器
$ 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?
例如它可以连接到另一个容器卷,而不知道卷是如何命名的,并且您没有指定路径。您可以使用 :ro
或 :rw
等权限为容器 ID 添加后缀。
更多详细信息 here - 从容器中装载卷 (--volumes-from) 部分
另一个问题是什么-v
可以做到而--volumes-from
不能做到?
例如。它可以挂载命名卷,你可以挂载主机目录或 tmpfs(这个你不能在容器之间共享)。在 --volume-from
中,您无法直接与主机共享数据。
结论是:--volume
的目的是为了和主机共享数据。 (here you can find more use cases).
--volumes-from
的目的是在容器之间共享数据。
他们俩配合得很好。
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
做同样的事情
正在使用容器 c1
c3
的容器
$ 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?
例如它可以连接到另一个容器卷,而不知道卷是如何命名的,并且您没有指定路径。您可以使用 :ro
或 :rw
等权限为容器 ID 添加后缀。
更多详细信息 here - 从容器中装载卷 (--volumes-from) 部分
另一个问题是什么-v
可以做到而--volumes-from
不能做到?
例如。它可以挂载命名卷,你可以挂载主机目录或 tmpfs(这个你不能在容器之间共享)。在 --volume-from
中,您无法直接与主机共享数据。
结论是:--volume
的目的是为了和主机共享数据。 (here you can find more use cases).
--volumes-from
的目的是在容器之间共享数据。
他们俩配合得很好。