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

基于Debian基础镜像在Dockerfile中添加系统用户失败的问题求助

解决Dockerfile中adduser命令报错的问题

我一眼就看出问题出在你adduser命令的参数顺序上——你把/bin/bash直接放在命令开头,这违反了adduser的语法规则,导致它误以为你传入了多个用户名,从而抛出Only one or two names allowed的错误。

错误原因分析

adduser命令中,如果要指定用户的登录shell,必须使用--shell选项来声明,而不是直接把shell路径作为位置参数放在最前面。你的原命令里,/bin/bash被当成了额外的用户名参数,超出了命令允许的数量,所以触发了错误。

修正后的adduser命令

把/bin/bash改成--shell /bin/bash,调整后的命令如下:

adduser --system --home "$FORGEROCK_HOME" --uid 11111 --group root --disabled-password --shell /bin/bash forgerock

完整的RUN语句替换

将你Dockerfile中的RUN语句替换为下面的版本:

RUN apt-get update && apt-get -y --no-install-recommends install unzip curl bash vim dnsutils iputils-ping tini \
 && rm -fr "$CATALINA_HOME"/webapps/ROOT \
 && mkdir -p /opt/forgerock \
 && addgroup --gid 11111 forgerock \
 && adduser --system --home "$FORGEROCK_HOME" --uid 11111 --group root --disabled-password --shell /bin/bash forgerock \
 && chown -R forgerock:root "$CATALINA_HOME" "$FORGEROCK_HOME" \
 && chmod -R g+rwx "$CATALINA_HOME"

额外验证点

  • 确保$FORGEROCK_HOME环境变量已经在Dockerfile中提前定义(比如用ENV FORGEROCK_HOME /opt/forgerock),否则--home参数会找不到正确路径。
  • addgroup创建的forgerock组你并没有在adduser中关联,如果你想让用户加入forgerock组,可以把--group root改成--ingroup forgerock,或者保留--group root同时添加--ingroup forgerock(根据你的需求选择)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 11:02:27