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

标签 docker docker-volume

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/

相关文章:

docker - 我可以将文件从 docker 中的卷挂载到容器吗?

docker - 容器内容未使用 docker volume 复制到 docker 主机

docker - 无法从 kubernetes pod 内的 docker run 写入文件

heroku - 在不使用heroku docker插件的情况下将docker部署到heroku

docker - 如何安装Xpack在Docker上运行的Elasticsearch?

github - Docker:从私有(private) GitHub 存储库中获取

mysql - Docker-Compose 无法连接到 MySQL

docker - 如何在 Dockerfile 中使用现有的 Docker Volume

BlueMix 上的 Docker 卷大小限制

python - docker run 中的flask主机地址