Не удалось получить доступ к Docker Daemon из Jenkins

Я запускаю Jenkins внутри док-контейнера.

Я использую следующую команду для запуска контейнера:

docker run -p 8080:8080 -p 50000:50000 -v "${PWD}:/var/jenkins_home" -v /var/run/docker.sock:/var/run/docker.sock aemdesign/jenkins

Обратите внимание -v /var/run/docker.sock:/var/run/docker.sock — я сделал это, чтобы иметь доступ к демону докера из Jenkins в соответствии со статьей это.

Я cd в контейнер jenkins, используя docker exec -it <mycontainer> bash

Затем я запускаю docker ps -a, но все еще получаю сообщение об ошибке docker command not found.

Я провел еще несколько исследований в Интернете и узнал о плагине Docker для Jenkins и настроил его для подключения к демону Docker. Я получаю следующую ошибку

Не удалось получить доступ к Docker Daemon из Jenkins

Я что-то пропустил? Как решить эту проблему? Обратите внимание, что я делаю это локально на машине MAC.

Попробуйте добавить пользователя jenkins в группу docker.

Matt Schuchard 15.05.2019 13:05
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
2
1
167
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

-v /var/run/docker.sock:/var/run/docker.sock, это просто означает, что ваш контейнер имеет доступ к docker daemon на хосте, а не означает, что ваш контейнер будет иметь docker client.

Вы можете использовать -v $(which docker):/usr/bin/docker, чтобы добавить docker client в свой контейнер, тогда вы найдете команду.

 docker run -u root -p 8080:8080 -p 50000:50000 -v $(which docker):/usr/bin/docker -v "${PWD}:/var/jenkins_home" -v /var/run/docker.sock:/var/run/docker.sock aemdesign/jenkins

Другой способ, если вы хотите зарезервировать пользователя jenkins.

docker run -u jenkins:$(cut -d: -f3 < <(getent group docker)) -p 8080:8080 -p 50000:50000 -v $(which docker):/usr/bin/docker -v "${PWD}:/var/jenkins_home" -v /var/run/docker.sock:/var/run/docker.sock aemdesign/jenkins

Я выполнил команду, как вы предложили. Я могу запускать команды docker из контейнера Jenkins, но только тогда, когда я являюсь пользователем root — «docker exec -it -u root <mycontainer> /bin/bash», в противном случае я получаю ошибку отказа в разрешении. В основном я хочу запускать команды докеров из конвейеров jenkins.

Archit Arora 16.05.2019 07:09

Обновите, вы можете использовать -u root для запуска контейнера jenkins или использовать -u jenkins:gid для резервирования пользователя jenkins.

atline 16.05.2019 08:00

Другие вопросы по теме