Решение:
Собираем образ jenkins:2.462.3-jdk17 по инструкции
https://www.jenkins.io/doc/book/installing/docker/
FROM jenkins/jenkins:2.462.3-jdk17
USER root
RUN apt-get update && apt-get install -y lsb-release
RUN curl -fsSLo /usr/share/keyrings/docker-archive-keyring.asc \
https://download.docker.com/linux/debian/gpg
RUN echo "deb [arch=$(dpkg --print-architecture) \
signed-by=/usr/share/keyrings/docker-archive-keyring.asc] \
https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list
RUN apt-get update && apt-get install -y docker-ce-cli
USER jenkins
RUN jenkins-plugin-cli --plugins "blueocean docker-workflow"
Далее собираем контейнер jenkins-blueocean из образа, в моем случае сборка идет из Docker Registry
services:
jenkins:
container_name: jenkins-blueocean
image: 192.168.0.42:5000/jenkins:2.462.3-jdk17
privileged: true # Запуск с правами привилегированного контейнера
ports:
- "8080:8080"
- "50000:50000"
volumes:
- /var/run/docker.sock:/var/run/docker.sock # Подключаем Docker сокет для доступа к хосту
networks:
jenkins_network: # Используем пользовательскую сеть
networks:
jenkins_network: # Создание пользовательской сети
driver: bridge
Теперь наша задача проверить что Jenkins видит образы
Заходим в контейнер, проверяем, соответственно ругается так как прав нет
jenkins@f2b6f83f5892:/$ docker images
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Head "http://%2Fvar%2Frun%2Fdocker.sock/_ping": dial unix /var/run/docker.sock: connect: permission denied
Так как у jenkins в сборе sudo нет все делаем под правами root
Устанавливаем пакет управления доступом (ACL)
root@f2b6f83f5892:/# apt-get install acl
даем пользователю jenkins доступ на чтение и запись
root@f2b6f83f5892:/# setfacl -m u:jenkins:rw /var/run/docker.sock
Перезаходим под пользователя jenkins
jenkins@f2b6f83f5892:/$ docker images
Появится список образов docker. Вопрос решен Jenkins находится в контейнере и видит Docker