В приведенном ниже файле docker базовое изображение (jenkins/jenkins
) предоставляет пользователю jenkins
с UID 1000
и 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
Эта конфигурация dockremap не позволяет запускаться jenkins, и docker контейнер переходит в Exited
состояние:
$ ls -l /abc/home_folder_for_jenkins
total 0
После удаление docker переназначения конфигурации, все работает нормально.
Почему конфигурация dockremap не позволяет контейнеру jenkins работать как jenkins
пользователь?