我知道,在某些情况下,在容器上安装命名卷可能会导致容器中的数据自动复制到卷中,类似于匿名卷所发生的情况。
然而,即使在阅读了文档之后,我也不清楚触发复制的确切条件是什么。
我创建了一个包含两个文件test
和/root/a/a.txt
的{{1}}图片,并执行了以下实验:
/root/b/b.txt
(现在在容器内)
$ docker volume create --name hello
hello
$ docker run -v hello:/root/a test /bin/true
$ docker run -v hello:/root/b test /bin/true
$ docker run -ti -v hello:/tmp/result test /bin/bash
似乎数据在第一次安装后被复制到卷中,而不是之后(尽管没有为第二次安装指定# cd /tmp/result
# ls
a.txt
)。
命名卷是否具有隐藏状态,可以跟踪它们是否尚未安装?或者只是卷被清空才触发复制?如果仅在第一次复制时,nocopy
nocopy
-v
选项的docker run
修饰符的目的是什么?
我正在使用Docker 1.11.1版。
答案 0 :(得分:0)
在我的测试中,当您运行容器时,当卷为空时,它似乎会触发副本。
我测试了从一个容器中的第一个安装点填充的卷。在另一个容器的第二个安装点上使用此命名卷显示了第一个安装点的内容。然后,我删除了内容,但容器仍在运行,卷仍然安装。最后,我启动了第二个具有不同安装点的容器,然后填充了第二个安装点的内容。