Как в качестве агента Jenkins плдключить Docker-контейнер docker:dind или аналогичный?
Всем привет!
Помогите нубу в дженкинсе настроить агента/слейва для сборки докеровских образов. Например, вот здесь:
https://habr.com/ru/articles/493580/
написано, что мы запускаем отдельный контейнер из образа docker:dind для сборки в качестве агента.
docker container run --name jenkins-docker --detach --privileged --network jenkins --network-alias docker --env DOCKER_TLS_CERTDIR=/certs --volume jenkins-docker-certs:/certs/client --volume jenkins-data:/var/jenkins_home --publish 2376:2376 docker:dind |
docker container run --name jenkins-docker --detach --privileged --network jenkins --network-alias docker --env DOCKER_TLS_CERTDIR=/certs --volume jenkins-docker-certs:/certs/client --volume jenkins-data:/var/jenkins_home --publish 2376:2376 docker:dind
Ну ок, контейнер завелся. Мне надо к нему как то подключаться, видимо, через порт 2376. Захожу в настройки дженкинса, ноды, создать новую ноду. Там есть непонятный мне пункт "Launch method : It Controls how Jenkins starts this agent." В нем выбор из:
– Launch agent via Java Web Start
– Launch agent via execution of command on the master
– Launch slave agents via SSH
– Запустить агент, подключив его к контроллеру
Если я развернул обычного агента со стандартным SSH, то я подключаюсь по 3-му варианту через имя/ключ. А как настроить подключение к docker:dind через 2376 порт - пока не допер.
Дополнительно:
вам помочь поискать за вас
динд это значит докер внутри докера
[quickstart CI with Jenkins and Docker-in-Docker](https://medium.com/swlh/quickstart-ci-with-jenkins...)
[continuous Integration with Docker and Jenkins](https://medium.com/@leihetito/continuous-integrati...)
[jenkins in Docker: Running Docker in a Jenkins Container](https://hackmamba.io/blog/2022/04/running-docker-i...)
[repo](https://github.com/Kikiodazie/Backend-RESTful-API)
https://github.com/jpetazzo/dind
https://github.com/tehranian/dind-jenkins-slave
https://stackoverflow.com/questions/7985755/how-to...
https://stackoverflow.com/questions/1894967/how-to...
https://github.com/killercentury/docker-jenkins-dind
https://github.com/alekslitvinenk/dind
https://www.jenkins.io/doc/book/installing/docker/
https://hackmamba.io/blog/2022/04/running-docker-i...
https://hackmamba.io/blog/2022/04/running-docker-i...
https://forums.docker.com/t/using-docker-in-a-dock...
https://gist.github.com/adelmofilho/5a30a87eaf1cd4...
https://github.com/killercentury/docker-jenkins-dind
https://wiki.jenkins-ci.org/display/JENKINS/Docker...
https://blog.docker.com/2013/09/docker-can-now-run...
> вам помочь поискать за вас
Если это был вопрос, то в конце ставится вопросительный знак
> динд это значит докер внутри докера
Я знаю это. Вопросы был как настроить это
>[quickstart CI with Jenkins and Docker-in-Docker](https://medium.com/swlh/quickstart-ci-with-jenkins...)
Не открывается
[continuous Integration with Docker and Jenkins](https://medium.com/@leihetito/continuous-integrati...)
Не открывается
>[jenkins in Docker: Running Docker in a Jenkins Container](https://hackmamba.io/blog/2022/04/running-docker-i...)
Про настройку связки не слова, как и про название образа dind
>[repo](https://github.com/Kikiodazie/Backend-RESTful-API)
И что мне с этим делать? Ни описания, ничего.
>https://github.com/jpetazzo/dind
Как связать с дженкинсом понимания не прибавилось после прочтения
>https://github.com/tehranian/dind-jenkins-slave
Изучаю пока
>https://stackoverflow.com/questions/7985755/how-to...
Не по теме
>https://stackoverflow.com/questions/1894967/how-to...
Вообще не про то
>https://github.com/killercentury/docker-jenkins-dind
У меня уже установленный и настроенный jenkins. В него влито много человекочасов. В этом образе предполагается удалить все и начинать сначала. Вопрос стоял в том, как связать 2 уже работающих контейнера: дженкинса и агента
>https://github.com/alekslitvinenk/dind
Как связать с дженкинсом не говорится. Просто один из dind
>https://www.jenkins.io/doc/book/installing/docker/
Я не буду крушить настроенный дженкинс, переделывая образ. Я ищу инфу только по настройке связки с агентом
Пересмотрев без пользы половину списка, дальше время решил не тратить, пошел дальше искать нормальную доку
quickstart CI with Jenkins and Docker-in-Docker - turns out to be "ember-only story"
https://medium.com/swlh/quickstart-ci-with-jenkins...
есть разница между "помогите доработать" и "сделайте за меня" (на фриланс)
https://github.com/piomin/jenkins-slave-dind-jnlp
Dockerfile
COPY --chmod=777 entrypoint.sh /usr/local/bin/entrypoint ENTRYPOINT ["/usr/local/bin/entrypoint"] |
COPY --chmod=777 entrypoint.sh /usr/local/bin/entrypoint ENTRYPOINT ["/usr/local/bin/entrypoint"]
entrypoint.sh
echo "starting jnlp slave... " $JENKINS_SLAVE_NAME exec java -jar /usr/share/jenkins/slave.jar -jnlpUrl $JENKINS_URL/computer/$JENKINS_SLAVE_NAME/slave-agent.jnlp -secret $JENKINS_SLAVE_SECRET |
echo "starting jnlp slave... " $JENKINS_SLAVE_NAME exec java -jar /usr/share/jenkins/slave.jar -jnlpUrl $JENKINS_URL/computer/$JENKINS_SLAVE_NAME/slave-agent.jnlp -secret $JENKINS_SLAVE_SECRET
1. Мне лично от вас ничего не надо, тем более, с таким отношением. Готовы помочь бесплатно - помогайте, не готовы - тогда зачем вообще заходите на этот ресурс?
2. У меня 99% задачи выполнено. Просто нет понимания, как взаимодействуют 2 контейнера. Те, кто это делал хоть раз, уже знают решение и могут ответить в 1-2 предложениях. Вместо этого накидали ссылок, которые не отвечают на мой вопрос.
3. Вы не помогаете, а только пытаетесь самоутверждаться за мой счет и тратите мое время. Хороший специалист и так имеет хорошую самооценку и не нуждается в подобном высокомерном отношении. Это скорее признак неуверенного в себе слабого инженера, который хотя бы в своих глазах пытается поднять самооценку.
>quickstart CI with Jenkins and Docker-in-Docker - turns out to be "ember-only story"
>https://medium.com/swlh/quickstart-ci-with-jenkins...
Сергей, вы сами читали эту статью? Там есть ответ на мой вопрос?
У меня есть контейнер, созданный из образа docker:dind. У меня задача - привязать его в качестве агента/слейва к дженкинсу. В этой статье это написано? Какой пункт меню выбрать для связки с контейнером, по какому протоколу, по какому порту? Ничего этого нет. Ваши комментарии не только не несут пользу, они попросту вредят. Загадили уже все комменты. Сергей, просто уходите! Мне не нужны ваши нерелевантные ссылки. Не знаете ответ на вопрос, хотя бы прекратите спамить/троллить
2Модератор: можно весь этот тред с данным товарищем зачистить? Ссылки не отвечают на мой вопрос, только всю ленту комментариев загадили
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для того чтобы подключить Docker-контейнер docker:dind или аналогичный к агенту Jenkins, вам потребуется выполнить несколько шагов:
1. Установите Docker на вашем агенте Jenkins. Вы можете установить Docker как обычно, выполнив команды установки для вашей операционной системы.
2. Добавьте агента Jenkins, который будет запускать Docker-контейнер. Для этого создайте новый узел в вашей конфигурации Jenkins и настройте его так, чтобы он мог запускать контейнеры Docker. Укажите путь к исполняемому файлу Docker на вашем агенте.
3. В настройках вашего Jenkins Job добавьте шаг, который будет запускать Docker-контейнер. Для этого используйте команду docker run с необходимыми параметрами. Например, если вы хотите запустить контейнер docker:dind, то команда будет выглядеть примерно так:
docker run --privileged --name my-docker-container -d docker:dind
4. После запуска контейнера, вы можете использовать его для выполнения необходимых действий, например, сборки и тестирования вашего проекта.
5. Убедитесь, что ваш агент Jenkins имеет необходимые разрешения для запуска Docker-контейнеров. В некоторых случаях может потребоваться настройка прав доступа к Docker с использованием sudo или добавление пользователя Jenkins в группу docker.
Следуя этим шагам, вы сможете успешно подключить Docker-контейнер к вашему агенту Jenkins и использовать его для автоматизации процесса сборки и развертывания вашего проекта.