Не работает 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 шт):
У вас в контейнере нет бинарника 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/
Вы ей пользовались?