docker - 装入命名卷时,在什么条件下从容器复制数据?

我知道,在某些情况下,将命名卷安装在容器上会导致容器中的数据自动复制到该卷,这与匿名卷类似。

但是,即使在阅读了文档之后,我仍然不清楚触发该副本的确切条件是什么。

我用两个文件test/root/a/a.txt创建了一个/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修饰符对-vdocker run选项的作用是什么?

我正在使用Docker 1.11.1版本。

最佳答案

根据我的测试,当您运行容器时,如果卷为空,它似乎会触发复制。

我测试了从一个容器中的第一个安装点填充的卷。在另一个容器的第二个安装点上使用此命名的卷显示了第一个安装点的内容。然后,我删除了内容,但是容器仍在运行,并且卷仍在装入。最后,我启动了另一个具有不同安装点的容器,然后填充了第二个安装点中的内容。

https://stackoverflow.com/questions/37689323/

相关文章:

docker - 来自链接容器的主机网络访问

git - ansible git 模块中是否有缓存?

docker - Docker Kitematic连接ETIMEDOUT错误

jenkins - 使用 Cloudbees Docker 构建和发布插件时从 Jenkins 奴隶

docker - 无法在Windows上连接到Docker容器

docker - Ansible如何将本地镜像推送到私有(private)注册表

docker - 当我尝试连接到 docker 镜像时,主机没有运行

macos - 服务 'nginx'无法构建:…只读文件系统

docker - 为什么在我基于 alpine 的 docker-compose 构建中找不到 bi

macos - 如何在 Mac 上从 Jenkins 运行 docker builds?