装载命名卷时,在什么情况下从容器复制数据?
我知道,在某些情况下,在容器上挂载一个命名卷可能会导致容器中的数据被自动复制到卷中,类似于匿名卷所发生的情况。
但是,即使在阅读文档之后,我不清楚触发副本的确切条件是什么。
我使用两个文件/root/a/a.txt
和/root/b/b.txt
创build了一个test
映像,并执行了以下实验:
$ 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
看起来数据在第一次安装之后被复制到卷中,而不是在第二次安装之后(尽pipe没有指定nocopy
)。
命名卷有隐藏状态,跟踪是否尚未安装? 还是仅仅是卷被空的情况下触发的副本? 如果复制只发生在第一次, nocopy
的-v
选项的nocopy
修饰符的目的是什么?
我正在使用Docker版本1.11.1。
从我的testing中看,当你运行容器时,当容量为空时,它会触发复制。
我testing了一个容器中第一个安装点的容量。 在另一个容器的第二个安装点上使用此命名卷显示了第一个安装点的内容。 然后,我删除了内容,但容器仍在运行,卷仍然安装。 最后,我启动了另一个装载点的容器,第二个装载点的内容被填充。