useradd
或adduser
等工具/etc
可能被挂载为只读/etc/passwd
或/etc/shadow
文件权限问题docker run -it --user root <image_name> /bin/bash
在Dockerfile中添加:
RUN apt-get update && apt-get install -y passwd shadow-utils
# 或对于Alpine
RUN apk add --no-cache shadow
# 检查挂载点
mount | grep etc
# 如果/etc是只读的,需要重新运行容器
docker run -it --tmpfs /run --tmpfs /tmp -v /etc/passwd:/etc/passwd -v /etc/group:/etc/group <image_name>
RUN useradd -ms /bin/bash newuser
RUN curl -o /usr/local/bin/gosu -SL "https://github.com/tianon/gosu/releases/download/1.12/gosu-amd64" \
&& chmod +x /usr/local/bin/gosu
进入容器:
docker exec -it --user root <container_id> /bin/bash
尝试添加用户:
useradd testuser
检查是否成功:
id testuser
grep testuser /etc/passwd
--user
参数或用户命名空间希望这些解决方案能帮助您解决Docker容器内无法增加用户的问题。