在下面的 docker 文件中,base image( )在容器中jenkins/jenkins
为用户jenkins
提供 UID1000
和 GID 。1000
FROM jenkins/jenkins
# Install some base packages
# Use non-privileged user provided by base image
USER jenkins # with uid 1000 and GID 1000
# Copy plugins and other stuff
在 docker 主机(EC2 实例)上,我们也创建了类似的 UID 和 GID,
$ groupadd -g 1000 jenkins
$ useradd -u 1000 -g jenkins jenkins
$ mkdir -p /abc/home_folder_for_jenkins
$ chown -R jenkins:jenkins /abc/home_folder_for_jenkins
确保容器可以将文件写入/abc/home_folder_for_jenkins
EC2 实例。
在同一个 EC2 实例中我们需要注意的另一个方面是运行容器(除了上述容器)以在非特权模式下运行。
因此,在 docker 主机(EC2)上执行以下配置:
$ echo dockremap:165536:65536 > /etc/subuid
$ echo dockremap:165536:65536 > /etc/subgid
$ echo '{"debug":true, "userns-remap":"default"}' > /etc/docker/daemon.json
这个 dockerremap 配置不允许 jenkins 启动并且 docker 容器进入Exited
状态:
$ ls -l /abc/home_folder_for_jenkins
total 0
删除 docker remap 配置后,一切正常。
为什么dockerremap配置不允许jenkins容器以jenkins
用户身份运行?