Не работает Docker в Jenkins

Jenkins запущен в Docker. На Jenkins скачан плагин для запуска докера, но при попытке сборки Jenkins выводит следующее:

Started by user admin

[Pipeline] Start of Pipeline
[Pipeline] node
Running on Jenkins
in /var/jenkins_home/workspace/Playwright
[Pipeline] {
[Pipeline] isUnix
[Pipeline] withEnv
[Pipeline] {
[Pipeline] sh
+ docker inspect -f . mcp/playwright:latest
/var/jenkins_home/workspace/Playwright@tmp/durable-7d59ee8c/script.sh.copy: 1: docker: not found
[Pipeline] isUnix
[Pipeline] withEnv
[Pipeline] {
[Pipeline] sh
+ docker pull mcp/playwright:latest
/var/jenkins_home/workspace/Playwright@tmp/durable-fa4146a0/script.sh.copy: 1: docker: not found
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
ERROR: script returned exit code 127
Finished: FAILURE


Ответы (1 шт):

Автор решения: Pak Uula

У вас в контейнере нет бинарника docker. Вам нужно пробросить в контейнер jenkins докер и сокет из внешнего мира:

docker run \
  -v /var/run/docker.sock:/var/run/docker.sock\
  -v /usr/bin/docker:/usr/bin/docker\
  ...
  jenkins/jenkins:lts

кроме того, нужно чтобы в вашем контейнере пользователь, от имени которого запущен процесс jenkins, имел права на запись в /var/run/docker.sock. Если это не root, то нужно будет собрать свой образ из jenkins, добавив туда команду

RUN groupadd -g 999 docker
RUN usermod -aG docker jenkins
  • я не знаю, под каким именем запущен jenkins, предполагаю что этого пользователя зовут jenkins
  • обычно докер создаёт свою группу с номером 999. Чтобы убедиться в этом, запустите на хосте команду getent group docker

Но это так небезопасно... Когда супостаты взломают ваш jenkins, то оне смогут сделать с вашим докером всё, что угодно.

PS. оказывается, у них есть инструкция https://www.jenkins.io/doc/book/installing/docker/

Вы ей пользовались?

→ Ссылка