You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker构建Alpine镜像时如何将用户添加到多个用户组

解决方案

Alpine 中adduser命令仅用于创建新用户,对已存在的用户重复执行该命令必然返回user userA is in use报错。给已有用户分配附属组需要使用addgroup命令,语法为:

addgroup <用户名> <目标组名>

该命令不会修改用户的主用户组,只会将用户追加为目标组的附属成员,支持对同一个用户多次执行,加入多个不同组。

修正后的Dockerfile

直接在创建完用户和组之后,追加多条addgroup指令即可,不需要安装额外依赖包:

FROM python:alpine3.16
# 先创建所需用户组
RUN addgroup --gid 2076 groupA && \
    addgroup --gid 2077 groupB && \
    addgroup --gid 400 groupC
# 创建目标用户
RUN adduser -u 5532 -s /bin/tcsh -D userA
# 将用户加入多个附属组
RUN addgroup userA groupA && \
    addgroup userA groupB && \
    addgroup userA groupC

验证方式

镜像构建完成后,进入容器执行id userA,即可看到用户已同时归属groupA、groupB、groupC三个附属组,输出格式类似:

uid=5532(userA) gid=1000(userA) groups=1000(userA),400(groupC),2076(groupA),2077(groupB)

注意:不要直接套用Debian/Ubuntu系的usermod -aG写法,Alpine基础镜像默认未搭载GNU版usermod工具,使用该命令需要额外安装shadow包,会不必要地增大镜像体积,使用系统自带的addgroup是最优方案。

内容的提问来源于stack exchange,提问作者DDStackoverflow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 02:45:35