【发布时间】: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