我正在使用以下命令创建用户和主目录,但由于某种原因,新创建的主目录归 root 所有:
useradd --user-group --create-home --base-dir /opt --shell /bin/bash testuser
我正在基于 eclipse-temurin:11.0.15_10-jre-focal(基于 Ubuntu 20.04)创建 Docker 映像。上面的命令包含在我的 Dockerfile 中,奇怪的是,当我在 Windows 机器上本地构建它时,主目录归新用户所有,但是当我使用 Azure、DevOps 管道构建它时,主目录归 root 所有。我不明白是什么原因导致 useradd 命令的行为不同。我发现帖子中存在与主目录位于 NFS 卷上相关的类似问题,但这里的情况并非如此:/opt 在容器内。
答案1
我在 Ubuntu 22.04 上使用 docker.io 时遇到了类似的问题,使用这个简单的 Dockerfile,
FROM ubuntu:22.04
RUN useradd -m -u 1000 -s /bin/bash xyz && ls -l /home
RUN ls -l /home
在命令之间,homedir的所有权xyz
被设置为 root:root RUN
。我在设置中找到了解决方案DOCKER_BUILDKIT=1
,
$ DOCKER_BUILDKIT=1 docker build .
也许您可以在 Azure 管道中定义或设置它。
答案2
我遇到了同样的问题,最后通过重新安装 Docker 解决了这个问题。我遵循这指南完全卸载(除了不需要删除docker组)。然后按照常规 docker 指南重新安装。
答案3
也许问题就是上面提到的这里docker.io
. 该错误已在版本20.10.25-0ubuntu1~20.04.2
/中修复20.10.25-0ubuntu1~22.04.2
。
更新: