@OwDafuq

Надо ли ставить на саму машину или можно в Docker?

Есть машина, на которой есть Docker, хотел туда поставить Jenkins, но в нем нет docker'a самого, любые вызовы docker выкатывают ошибку, что docker'a нет.

Соответственно вопрос: где должен находиться Jenkinks, на самой машине или в Docker'e, но нужно сделать какую-то магию?

И, почему-то, ставил MSBuild в Jenkins, а dotnet build тоже не работал, говоря, что dotnet - нет такой команды (может нужно сделать свой образ на основе jenkins, куда будут установлены все dotnet зависимости, а потом в jenkins'e будет работать dotnet build, но как быть с контейнерами? убить старые, запустить новые...)
  • Вопрос задан
  • 112 просмотров
Решения вопроса 1
@MadridianFox
Web-программист, многостаночник
Важно понимать, что докер демон - это сервер, и он работает по сети, т.е. может быть доступен с другой машины или из контейнера.
Самому дженкинсу докер не нужен (если не используется docker plugin для динамисеского создания агентов в контейнерах). Докер нужен агенту, потому что скорее всего вы хотите в итоге собрать докер образ.
Однако, и агенту сам докер не нужен, нужен только клиент докера, а докер-демон может быть в другом месте.
Кроме того, использовать мастер-ноду дженкинса это моветон. Это может помешать работе дженкинса. Лучше выделять отдельных агентов.
В вашем случае нужно сделать следующее: собрать докер образ агента, в котором помимо самого агента будет докер(клиент) и необходимые вам инструменты.
Далее запускаете этот образ с монтирования в него сокета докера, тогда докер-клиент внутри контейнера будет работать с докер-демоном на хосте.
Ну и далее подключаете этот агент к дженкинсу. Сам дженкинс тут может быть вообще без дополнительных инструментов, без докера и даже на другой машине, хотя проще его поднять тут же в докере.
Это не самая безопасная схема, есть недостатки.

Другой вариант - собрать образ можно через podman. Это "докер" без демона. Его легче запустить в контейнере. Опять же его надо установить в образ агента.

Ну или полноценный dind, да. Опять же в агенте.

Если не хотите а отдельный агент, то да, вам нужно сделать всё это с образом дженкинса и использовать мастер-ноду.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
ky0
@ky0
Миллиардер, филантроп, патологический лгун
Чтобы запускать докер внутри докера, есть такая штука как DinD. Такое стоит использовать не всегда. Возможно, достаточно будет просто прокинуть докеровский сокет внутрь контейнера.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы