# Склейка DinD и Jenkins SSH Agent. - Берем [Jenkins SSH Agent](https://github.com/jenkinsci/docker-ssh-agent), а именно [Alpine Dockerfile](https://github.com/jenkinsci/docker-ssh-agent/blob/master/alpine/Dockerfile) - Изменяем базовый образ на `docker:dind` (по-умолчанию он на базе alpine) - Добавляем в `Dockerfile` под создание пользователя `jenkins` строки: ```Dockerfile RUN addgroup docker || true && \ addgroup ${user} docker ``` - В `setup-sshd` вписываем строки: ```shell # dockerd's patch dockerd-entrypoint.sh & ``` - Собираем, тэгаем и пушим # Как использовать: ## Запуск агента Генерируем новую пару SSH ключей. ```shell ssh-keygen -t rsa -b 4096 -f .ssh/jenkins-ssh-agent -C "jenkins-ssh-agent" ``` Желательно установить [SysBox](https://github.com/nestybox/sysbox/releases/tag/v0.6.6), без него придется делать контейнер с агентом привилегированным. Берем `docker-compose.yml` файл: ```yaml version: '3.7' services: jenkins-agent: image: git.tswf.io/docker-base-images/jenkins-ssh-agent-jdk17-dind:1.0.7 restart: always # Используем, если не хотим делать контейнер привилегированным runtime: sysbox-runc # Если не используем SysBox, а зря :c #privileged: true ports: - "31674:22" environment: JENKINS_AGENT_SSH_PUBKEY: "" ``` и заменяем `` на сгенеренный публичный ключ Запускаем агента: ```shell docker compose up -d ``` ## Настройки Jenkins Смотри [описание агента](AGENT.README.md) # Использование от ROOT Образ пропатчен для возможности запуска агента от имени ROOT. Решает сложности с запуском одноразовых docker-агентов на нашей ноде. Просто в credentials при указании логина пишем `root`. Публичный ключ прописывается и на `jenkins`, и на него.