docker容器的volumes-from选项中的'z'标志是什么?

新手上路,请多包涵

在浏览 docker 文档时,我遇到了 docker run 命令的 volumes-from ( https://docs.docker.com/engine/reference/commandline/run/ ) 选项。我不明白 ro, rw, and z 选项之间的区别 -

$ docker run --volumes-from ba8c0c54f0f2:ro -i -t ubuntu pwd

在上述命令中, ro 选项被替换为 z 。如果有人探讨使用这些选项的差异,我将不胜感激。

原文由 Yogesh Jilhawar 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.3k
2 个回答

两个后缀 :z 或 :Z 可以添加到卷安装。这些后缀告诉 Docker 重新标记共享卷上的文件对象。 ‘z’ 选项告诉 Docker 卷内容将在容器之间共享。 Docker 将使用共享内容标签标记内容。共享卷标签允许所有容器读/写内容。 “Z”选项告诉 Docker 使用私有非共享标签标记内容。

https://github.com/rhatdan/docker/blob/e6473011583967df4aa5a62f173fb421cae2bb1e/docs/sources/reference/commandline/cli.md

如果您使用 selinux,您可以添加 z 或 Z 选项来修改要挂载到容器中的主机文件或目录的 selinux 标签。这会影响主机本身的文件或目录,并可能产生 Docker 范围之外的后果。

z 选项表示绑定挂载内容在多个容器之间共享。 Z 选项表示绑定挂载内容是私有的和非共享的。使用这些选项时要格外小心。使用 Z 选项绑定挂载系统目录(例如 /home 或 /usr)会使您的主机无法运行,您可能需要手动重新标记主机文件。

\( docker run -d \ -it \ --name devtest \ -v "\)(pwd)“/target:/app:z \ nginx:latest

https://docs.docker.com/storage/bind-mounts/#configure-bind-propagation

原文由 amit23comp 发布,翻译遵循 CC BY-SA 3.0 许可协议

根据我机器上的测试, -z 让您可以与另一个容器共享内容。假设这个图像:

 FROM alpine
RUN mkdir -p /var/www/html \
    && echo "foo" > /var/www/html/index.html

让我们构建它并标记为 test-z

 $ docker build . -t test-z

现在创建并运行名为 testing-ztest-z 容器,将卷 test-vol 映射到 /var/www/html 并添加 z 修饰符

$ docker run \
    --name testing-z \
    --volume test-vol:/var/www/html:z \
    -d test-z tail -f /dev/null

可以使用 –volumes-from 标志从其他容器访问来自 testing-z/var/www/html 的内容,如下所示:

 $ docker run --rm --volumes-from testing-z -it nginx sh
# cat /var/www/html/index.html
foo

观察:我正在运行 Docker 版本 19.03.5-ce,构建 633a0ea838

原文由 Fabio Montefuscolo 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
logo
Stack Overflow 翻译
子站问答
访问
宣传栏