Docker 镜像的 UID、GID 管理都这么阴间的么? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
future0906
V2EX    Docker

Docker 镜像的 UID、GID 管理都这么阴间的么?

  •  
  •   future0906 16 天前 1293 次点击
    最近在整理 Homelab 里面 NAS 的权限,以前都没太关注。里面的 UID 和 GID 的管理简直五花八门。

    1. 有的在 Dockerfile 里面指定 UID 为 ARG 。
    2. 有的写死。
    3. 有的环境变量可以改。
    4. 有的直接 root 一把梭。

    对于 3 ,一般来说是在环境变量给 PUID 、UID 之类,这类还比较方便。
    对于 4 的话其实也还好,只要不指定 USER ,在 Compose 里面用 user: <uid:gid>这样指定
    对于 1 ,2 是真的太难了。要么就改 Dockerfile ,反正都要自己 build 。好一点的勉强能在 Compose 里面写个 InlineDockerfile ,手动改一下,复杂一点的镜像鬼知道有多少文件的 owner 是原来的账号?

    虽然我知道其实不改好像没有啥关系,**但是看到 ls 和 ps 时候的混乱的用户名,强迫症真的难绷。**

    我看文档似乎提供 subuid 、UserIdMap 之类的手段,但是网上讨论的人几乎没有,是大家的不在意吗?
    13 条回复    2025-09-25 14:37:44 +08:00
    julyclyde
        1
    julyclyde  
       16 天前
    你如果没用 nfs 这类东西的话,
    其实 uid 是无所谓的
    Niphor
        2
    Niphor  
       16 天前
    蹲一个终极方案

    反正除了 smb 的我都改 1000:1000 了其他都是按照他默认的来
    future0906
        3
    future0906  
    OP
       16 天前
    @julyclyde 确实是,但是 ls 和 ps 的时候没有显示正确很难受
    future0906
        4
    future0906  
    OP
       16 天前
    @Niphor 感觉按照默认的来似乎就是终极方案
    julyclyde
        5
    julyclyde  
       16 天前
    @future0906 按说容器里就没那么多用户名的
    别把临时的容器当成长期的虚拟机来用
    dbak
        6
    dbak  
       16 天前
    你可以查查 docker run -u 的用法
    future0906
        7
    future0906  
    OP
       16 天前
    @julyclyde 不是在容器里面建用户。就譬如容器里面的容器的用户 joplin ,是 1000

    在宿主机里面的 ps 看到的进程用户就是 1000 ,或者宿主机 1000 的用户名,纯数字还好,其他用户就怪怪的。譬如刚好宿主机的用户名字就 nginx 。

    ls 也是同理
    future0906
        8
    future0906  
    OP
       16 天前
    @dbak

    查过了,这个跟 compose 里面指定 user 是一样的。这个方法只对某些镜像有用。某些镜像会创建一个自己的 user ,并且初始化文件权限给这个用户,指定运行用户就会出错。

    当然我可以改文件权限,事实我也做过。但是每个镜像都不一样,要看源代码改,非常麻烦。
    Quint
        9
    Quint  
       16 天前
    优先使用 linuxserver 的镜像 都遵循统一的标准
    SenLief
        10
    SenLief  
       15 天前
    被这个权限的烦死了都,很多构建都喜欢用 root 来构建,而 nas 大多数又不提供,哎。
    future0906
        11
    future0906  
    OP
       15 天前
    @Quint 确实是一个思路,可惜我用的镜像 linuxserver 都没有提供
    @SenLief 哎,是啊。很多 docker 镜像构建都不统一。看来大家都是 just work 就行了
    julyclyde
        12
    julyclyde  
       15 天前
    @future0906 这 *就是* 在容器里创建用户
    你以为的创建是什么?其实就是/etc/passwd 文件里加一行啊
    cheng6563
        13
    cheng6563  
       15 天前
    嫌难看就搞 subuid 映射,这样把所有 uid 都搞成 10000 开始,每个都不好看,就不用当心账号问题了。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2887 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 14:21 PVG 22:21 LAX 07:21 JFK 10:21
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86