【问题标题】:Difference between -volume and -volumes-from in Docker VolumesDocker Volumes 中 -volume 和 -volumes-from 的区别
【发布时间】:2019-10-17 14:48:50
【问题描述】:

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 不能做什么?

【问题讨论】:

    标签: docker docker-volume


    【解决方案1】:

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

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

    什么--volumes-from 可以做到-v 不能做到?

    例如它可以连接到另一个容器卷,而无需知道卷是如何命名的并且您不指定路径。您可以为容器 ID 添加后缀,具有 :ro:rw 等权限。 更多详细信息here - 从容器装载卷(--volumes-from) 部分

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-01
      • 2015-08-12
      • 2022-10-25
      • 1970-01-01
      相关资源
      最近更新 更多