1 回答
TA贡献1831条经验 获得超10个赞
你的假设
我知道不可能更改通过卷共享的文件的权限
仅部分正确,实际上有一组模式 — :ro
& :rw
— 您可以在通过文档中描述的 docker-compose 安装卷时使用:
标准模式
ro
用于只读和rw
读写(默认)。
如果您的主机使用 .,您也可以使用:Z
和模式。:z
selinux
如果使用,
selinux
可以添加z
或选项来修改挂载到容器中的主机文件或目录Z
的 selinux 标签。这会影响主机本身上的文件或目录,并可能产生 Docker 范围之外的后果。
该
z
选项表示绑定挂载内容在多个容器之间共享。该
Z
选项表示绑定装载内容是私有的且不共享的。使用这些选项时要格外小心。绑定安装一个系统目录,如
/home
或/usr
选项Z
会使您的主机无法操作,您可能需要手动重新标记主机文件。
这是一个示例,在我的主机上,这是我的文件的权限:
~ # ls -la ro rw
ro:
total 0
drwxr-xr-x 3 ben staff 96 May 23 23:06 .
drwxr-xr-x 9 ben staff 288 May 23 23:16 ..
-rw-r--r-- 1 ben staff 0 May 23 23:06 file
rw:
total 0
drwxr-xr-x 3 ben staff 96 May 23 23:06 .
drwxr-xr-x 9 ben staff 288 May 23 23:16 ..
-rwxr-xr-x 1 ben staff 0 May 23 23:06 file
然后用这个docker-compose.yml
version: '3.8'
services:
test:
image: alpine
volumes:
- ./ro:/root/ro:Z
- ./rw:/root/rw:Z
command: sleep 100000000000
这是容器上的结果
~ # ls -la ro rw
ro:
total 4
drwxr-xr-x 3 root root 96 May 23 21:06 .
drwx------ 1 root root 4096 May 23 21:17 ..
-rw-r--r-- 1 root root 0 May 23 21:06 file
rw:
total 4
drwxr-xr-x 3 root root 96 May 23 21:06 .
drwx------ 1 root root 4096 May 23 21:17 ..
-rwxr-xr-x 1 root root 0 May 23 21:06 file
- 1 回答
- 0 关注
- 94 浏览
添加回答
举报