Дженкинс: Не удается подключиться к демону 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