V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
zhoudaiyu
V2EX  ›  问与答

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

  •  
  •   zhoudaiyu · 2022-09-06 22:36:40 +08:00 via iPhone · 615 次点击
    这是一个创建于 607 天前的主题,其中的信息可能已经有所发展或是发生改变。
    宿主机是 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 可对应上。请问大佬们,这个是为啥呢?
    4 条回复    2022-09-07 11:58:16 +08:00
    Nitroethane
        1
    Nitroethane  
       2022-09-06 23:39:01 +08:00   ❤️ 1
    我用官方的 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
        2
    zhoudaiyu  
    OP
       2022-09-06 23:46:32 +08:00 via iPhone
    @Nitroethane 那就奇怪了,我不知道是哪里出了问题,怀疑是 kylin v10 的问题
    Nitroethane
        3
    Nitroethane  
       2022-09-07 00:52:51 +08:00 via iPhone
    @zhoudaiyu run 指令默认用 sh -c 执行指定的命令,文档里指出了用 aufs 文件系统时会遇到类似的权限问题,你这内核这么新应该不会用 aufs ,不过还是确认下。另外你用的镜像是官方镜像吗?建议用我用的这个官方镜像再试试。

    跟你宿主机上的 umask 没关系。
    julyclyde
        4
    julyclyde  
       2022-09-07 11:58:16 +08:00
    umask 是一个局部活体概念
    不存在“宿主机上的 umask”这种说法
    只有“这个进程下的 umask”
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2282 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 16:03 · PVG 00:03 · LAX 09:03 · JFK 12:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.