在浏览docker文档时,我遇到了来自(https://docs.docker.com/engine/reference/commandline/run/)docker run命令选项的卷.我不理解ro, rw, and z提供
$ docker run --volumes-from ba8c0c54f0f2:ro -i -t ubuntu pwd
的ro选项之间的差异- 在上面的命令中,选项被替换为z.如果有人探讨使用这些选项的不同之处,我将感激不尽.
ami*_*omp 49
两个后缀:z或:Z可以添加到音量安装.这些后缀告诉Docker重新标记共享卷上的文件对象.'z'选项告诉Docker卷内容将在容器之间共享.Docker将使用共享内容标签标记内容.共享卷标签允许所有容器读/写内容."Z"选项告诉Docker使用私有非共享标签标记内容.
如果使用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
根据我机器上的测试,-z您可以与另一个容器共享一个容器中的内容。假设这个图像:
FROM alpine
RUN mkdir -p /var/www/html \
&& echo "foo" > /var/www/html/index.html
Run Code Online (Sandbox Code Playgroud)
让我们构建它并标记为test-z:
$ docker build . -t test-z
Run Code Online (Sandbox Code Playgroud)
现在创建并运行名为testing-z的test-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
Run Code Online (Sandbox Code Playgroud)
可以使用--volumes-from标志从其他容器访问testing-z中的/var/www/html内容,如下所示:
$ docker run --rm --volumes-from testing-z -it nginx sh
# cat /var/www/html/index.html
foo
Run Code Online (Sandbox Code Playgroud)
观察:我正在运行 Docker 版本 19.03.5-ce,内部版本 633a0ea838
| 归档时间: |
|
| 查看次数: |
30314 次 |
| 最近记录: |