Дженкинс: Не удается подключиться к демону Docker
Я запускаю Jenkins и Docker на машине CentOS. У меня есть работа Jenkins, которая вытаскивает репозиторий Github и создает образ Docker. Когда я пытаюсь запустить задание, я получаю сообщение об ошибке:
+ docker build -t myProject .
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
Build step 'Execute shell' marked build as failure
Finished: FAILURE
Это происходит, хотя я добавил jenkins в мою группу докеров с помощью sudo usermod -aG docker jenkins
и перезапустил мою машину. Как это исправить?
Кстати, если попробовать изменить команду на sudo docker build -t myProject .
, я просто получу ошибку sudo: sorry, you must have a tty to run sudo
Ответы
Ответ 1
После установки Дженкинса и Докера.
Добавьте пользователя jenkins в док-группу (как и вы)
sudo gpasswd -a jenkins docker
Отредактируйте следующий файл
vi /usr/lib/systemd/system/docker.service
И отредактируйте это правило, чтобы открыть API:
ExecStart=/usr/bin/docker daemon -H unix:// -H tcp://localhost:2375
Теперь пришло время перезагрузить и перезапустить демон Docker
systemctl daemon-reload
systemctl restart docker
Затем я перезапустил jenkins, и я смог выполнить команды докеров в качестве пользователя jenkins в моих работах jenkins
sudo service jenkins restart
Ответ 2
Другой вариант - указать, что ваш хост-докер Jenkins "unix:///var/run/docker.sock"
Это вместо того, чтобы запускать фактический хост докера и открывать его.
Ответ 3
@lvthillo, ваш ответ хорош, но недостаточно. Вам также необходимо создать группу докеров. См. Шаги после установки для Docker Управление докером как пользователем без полномочий.
https://docs.docker.com/engine/installation/linux/linux-postinstall/#manage-docker-as-a-non-root-user
чтобы добавить пользователя, запускающего jenkins в группу докеров.
например. если вы запускаете сервер Jenkins под пользователем jenkins
:
Шаг 1: Создать группу Docker
sudo groupadd docker
Шаг 2: добавьте пользователя в группу docker
:
sudo usermod -aG docker jenkins
Шаг 3: Выйдите из системы и войдите в систему как jenkins, затем проверьте:
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Группе docker
предоставляется специальная обработка демона докеров при запуске только для этой цели. Любой пользователь этой группы теперь может вызывать докер без sudo. Используйте это с осторожностью.
https://docs.docker.com/engine/security/security/#docker-daemon-attack-surface