基于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
相关产品推荐
相关产品推荐

