Мой образ Jenkins Docker содержит сам Docker. Причина заключается в том, чтобы иметь доступ к Docker во время заданий развертывания. Это просто решение, которое очень хорошо работает для меня.
После запуска контейнера я могу выполнять задания Jenkins, например, maven-build, а затем docker-build, пометить и отправить изображения Работает отлично! Для выполнения команд docker я включил access в Docker Engine из контейнера. Через docker.sock я могу получить доступ к движку Docker. Контейнер работает в существующей среде Docker. Обратите внимание: в качестве альтернативы я мог бы добавить инструментальные средства Docker позже через графический интерфейс Jenkins. Эта опция работает более года хорошо.
Проблема, с которой я столкнулся, заключается в невозможности доступа к механизму Docker. Причина в том, что /var/run/docker.sock имеет неправильные разрешения. Итак, после запуска образа Docker (или контейнера) мне нужно вручную (от имени пользователя root) изменить разрешения / var / run / docker на 777.
Как я могу изменить изображение, чтобы автоматически иметь правильные разрешения на выполнение для /var/run/docker.sock? Контейнер работает как пользователь jenkins.
Это мой контейнер:
FROM jenkins/jenkins:lts
USER root
RUN mkdir -p /tmp/download && \
curl -L https://download.docker.com/linux/static/stable/x86_64/docker-18.03.1-ce.tgz | tar -xz -C /tmp/download && \
rm -rf /tmp/download/docker/dockerd && \
mv /tmp/download/docker/docker* /usr/local/bin/ && \
rm -rf /tmp/download && \
curl -L "https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && \
chmod +x /usr/local/bin/docker-compose && \
groupadd -g 998 docker && \
usermod -aG staff,docker jenkins
...
user jenkins