更改 docker daemon 服务创建的文件的权限

更改 docker daemon 服务创建的文件的权限

我试图通过更改默认 .docker 守护进程创建文件时分配给文件的默认权限umask。 docker 守护进程服务以 root 身份运行并使用umaskroot创建文件。我尝试umask通过添加命令来更改/etc/init.d/docker,并将所需的命令umask(000)作为选项传递给启动停止守护进程,但它们似乎都不起作用。如何更改分配给 docker 守护进程创建的文件的默认权限?

编辑:我试图为主机上而不是容器内的 docker 守护进程创建的文件和文件夹设置默认权限。例如,如果主机上映射到容器内的文件夹不存在,docker 会自动创建文件夹并根据默认 umask(即 root 的 umask)分配权限。

答案1

Docker 容器通常按照设计以非特权模式运行。当容器中的进程以 root 身份运行时,进程 uid 0 会作为不同用户(通常为“nobody”)映射到主机操作系统。为了使容器内的任何进程能够从主机操作系统读取文件,这些文件必须是世界可读的。据推测,(买者自负,因为我不熟悉代码)Docker 会忽略 umask 设置,以确保它通过 -v 选项创建的目录实际上可以被容器读取。

我不太确定通过 btrfs 或 overlayfs 在容器内创建的文件,这些可由主机操作系统访问的文件是否必须是公开可读的。我也不确定这些文件的创建是在容器内还是在主机操作系统上处理。

相关内容