Надо ли ставить на саму машину или можно в Docker?
Есть машина, на которой есть Docker, хотел туда поставить Jenkins, но в нем нет docker'a самого, любые вызовы docker выкатывают ошибку, что docker'a нет.
Соответственно вопрос: где должен находиться Jenkinks, на самой машине или в Docker'e, но нужно сделать какую-то магию?
И, почему-то, ставил MSBuild в Jenkins, а dotnet build тоже не работал, говоря, что dotnet - нет такой команды (может нужно сделать свой образ на основе jenkins, куда будут установлены все dotnet зависимости, а потом в jenkins'e будет работать dotnet build, но как быть с контейнерами? убить старые, запустить новые...)
Важно понимать, что докер демон - это сервер, и он работает по сети, т.е. может быть доступен с другой машины или из контейнера.
Самому дженкинсу докер не нужен (если не используется docker plugin для динамисеского создания агентов в контейнерах). Докер нужен агенту, потому что скорее всего вы хотите в итоге собрать докер образ.
Однако, и агенту сам докер не нужен, нужен только клиент докера, а докер-демон может быть в другом месте.
Кроме того, использовать мастер-ноду дженкинса это моветон. Это может помешать работе дженкинса. Лучше выделять отдельных агентов.
В вашем случае нужно сделать следующее: собрать докер образ агента, в котором помимо самого агента будет докер(клиент) и необходимые вам инструменты.
Далее запускаете этот образ с монтирования в него сокета докера, тогда докер-клиент внутри контейнера будет работать с докер-демоном на хосте.
Ну и далее подключаете этот агент к дженкинсу. Сам дженкинс тут может быть вообще без дополнительных инструментов, без докера и даже на другой машине, хотя проще его поднять тут же в докере.
Это не самая безопасная схема, есть недостатки.
Другой вариант - собрать образ можно через podman. Это "докер" без демона. Его легче запустить в контейнере. Опять же его надо установить в образ агента.
Ну или полноценный dind, да. Опять же в агенте.
Если не хотите а отдельный агент, то да, вам нужно сделать всё это с образом дженкинса и использовать мастер-ноду.
OwDafuq, да особо никаких. Это самый простой вариант.
Однако контейнеризация и дженкинса и агента (со всеми необходимыми инструментами) даёт больше надёжности - вам уже не надо будет руками всё настраивать если вдруг что-то случится с сервером. Ну и упрощает я масштабирование - можно как поднять два-три агента на одной машине, так и вынести их на отдельные.
Иван Корюков, таких задач нет, контора не большая, никакого масштабирования не нужно будет точно. Поэтому, видимо, это самый простой для меня вариант будет, тупо поставить рядом его и всё. Спасибо за ответ, принимаю как верный :)
Чтобы запускать докер внутри докера, есть такая штука как DinD. Такое стоит использовать не всегда. Возможно, достаточно будет просто прокинуть докеровский сокет внутрь контейнера.
Или всё же проще поставить нужные SDK для сборки на сам сервер, рядом поставить и докер, и jenkins? Задач глобальных никаких, контора небольшая всё равно. Хороший ли это кейс будет?