为啥 Dockerfile 的 RUN mkdir /foo/bar 创建出来的目录权限和宿主机的 umask 还有容器里面 root 的 umask 设置都对不上?

2022-09-06 22:36:40 +08:00
 zhoudaiyu
宿主机是 huawei 的 kylin v10 的系统,aarch64 的架构,内核是 4.18 ,宿主机的 umask 是 0077 ,docker 版本是 18.09 ,基础镜像用的是 centos7.9 ,构建镜像用的 root 用户,镜像很简单,就是引入 centos 基础镜像后建一个文件夹,RUN mkdir /foo/bar ,但是建立出来的文件夹权限是 750 ,我们查了一下容器里面 root 用户的 umask 为 0022 ,于是手动用 root 用户建立一个文件夹权限就是 755 ,和 umask 可对应上。请问大佬们,这个是为啥呢?
715 次点击
所在节点    问与答
4 条回复
Nitroethane
2022-09-06 23:39:01 +08:00
我用官方的 docker.io/library/centos:7.9.2009 镜像并没有复现你的问题。下面是 Dockerfile:

FROM docker.io/library/centos:7.9.2009

RUN mkdir /foo

ENTRYPOINT [ "bash" ]



这是用构建出的镜像运行的容器中的结果:

[root@e4eb7f2097a1 /]# ls -ld /foo/
drwxr-xr-x. 1 root root 0 Sep 6 15:32 /foo/
zhoudaiyu
2022-09-06 23:46:32 +08:00
@Nitroethane 那就奇怪了,我不知道是哪里出了问题,怀疑是 kylin v10 的问题
Nitroethane
2022-09-07 00:52:51 +08:00
@zhoudaiyu run 指令默认用 sh -c 执行指定的命令,文档里指出了用 aufs 文件系统时会遇到类似的权限问题,你这内核这么新应该不会用 aufs ,不过还是确认下。另外你用的镜像是官方镜像吗?建议用我用的这个官方镜像再试试。

跟你宿主机上的 umask 没关系。
julyclyde
2022-09-07 11:58:16 +08:00
umask 是一个局部活体概念
不存在“宿主机上的 umask”这种说法
只有“这个进程下的 umask”

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/878201

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX