Я использую плагин AWS EC2 для Jenkins, чтобы порождать рабов Jenkins при создании задач.Проблемы с правами доступа при попытке построить докер внутри контейнера докера.Я просмотрел десятки других постов, и люди часто приводят это как ответ:
- создать группу Docker
- добавить пользователя jenkins в группу Docker
- restart
- все волшебно работает
Дело в том, что я не могу перезапустить, потому что раб jenkins появляется при использовании плагина, и я не уверен, как правильно перезапустить его дляэто правильно обрабатывать сборку при перезапуске.Кроме того, это будет означать запуск перезапуска на хосте, несмотря на то, что он находится в контейнере, что звучит как плохая идея.
Я пробовал:
Добавление jenkins вПользователи sudo в dockerfile RUN adduser jenkins
sudo
, за которыми следует RUN echo "jenkins ALL=NOPASSWD: ALL" >>
/etc/sudoers
Изменение владельца файла сокета Docker RUN chown root:jenkins /var/run/docker.sock
Изменение разрешений сокета Docker chmod 777 /var/run/docker.sock
Использование newgrp
, поэтому мне не нужно перезапускать докер из-за пределов контейнера
По сути, как мне обойтись неперезапустить службу докера, а также предоставить разрешения sudo для создания файлов докера внутри подчиненного контейнера jenkins?Или, если я действительно смогу перезапустить, все еще используя плагин EC2, как мне лучше всего это сделать?
Текущий файл Docker:
FROM jenkins/jnlp-slave
USER root
RUN apt-get update && \
apt-get -y install apt-transport-https \
ca-certificates \
curl \
gnupg2 \
software-properties-common && \
curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "$ID")/gpg > /tmp/dkey; apt-key add /tmp/dkey && \
add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/$(. /etc/os-release; echo "$ID") \
$(lsb_release -cs) \
stable" && \
apt-get update && \
apt-get -y install docker-ce && \
apt-get -y install sudo
VOLUME /var/run/docker.sock
RUN adduser jenkins sudo
RUN echo "jenkins ALL=NOPASSWD: ALL" >> /etc/sudoers
RUN usermod -aG docker jenkins
RUN chmod 777 /var/run/docker.sock
RUN chown root:jenkins /var/run/docker.sock
USER jenkins
Спасибо!