2

Я выполнил простые шаги, чтобы настроить Jenkins и запустить через докер-контейнер: https://jenkins.io/doc/book/install/#downloading-and-running-jenkins-in-docker

По сути, все, что я сделал, было запустить:

docker run \
  --rm \
  -d \
  -p 8080:8080 \
  -v jenkins-data:/var/jenkins_home \
  -v /var/run/docker.sock:/var/run/docker.sock \
  jenkinsci/blueocean

Теперь, при попытке настроить конвейер внутри Jenkins, он не может найти демон Docker. Ошибка вывода я получаю из конвейера внутри Jenkins:

+ docker pull python:3.6.3
Warning: failed to get default registry endpoint from daemon (Cannot connect to the Docker daemon. Is the docker daemon running on this host?). Using system default: https://index.docker.io/v1/
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
script returned exit code 1

Таким образом, это говорит о том, что нет запущенного демона Docker, который может видеть Дженкинс. Опция: -v /var/run/docker.sock:/var/run/docker.sock при запуске контейнера должна работать, но я не уверен, какие другие шаги по настройке я могу здесь пропустить?

Я запускаю это под macOS 10.13 и моя установка Docker на хосте работает нормально. Существуют некоторые точки конфигурации Jenkins, где можно настроить дополнительную информацию о докере и установки, но, похоже, по умолчанию должно работать?

Пожалуйста, дайте мне знать, если я что-то упустил, чтобы получить доступ Дженкинса к демону Docker.

[ОБНОВИТЬ]

После дополнительных поисков все указывали на разрешения /var/run/docker.sock в качестве основного источника для такого рода проблем. Глядя на этот смонтированный сокет, кажется, что пользователь jenkins не является частью нужной группы. Я предполагаю, что отображение формы группы хостов в контейнер выполняется по id, и это просто не совпадает?

1 ответ1

2

Добавьте --group-add docker в команду docker run чтобы убедиться, что пользователь, работающий в контейнере док-станции jenkins, будет принадлежать к эквивалентной группе докеров на вашем хосте.

docker run \
  --group-add docker \
  --rm \
  -d \
  -p 8080:8080 \
  -v jenkins-data:/var/jenkins_home \
  -v /var/run/docker.sock:/var/run/docker.sock \
  jenkinsci/blueocean

Смонтированный сокет: /var/run/docker.sock приводит к путанице относительно того, к какой группе он принадлежит на хосте и внутри контейнера jenkins.

В этом выпуске GitHub есть обсуждение: https://github.com/jenkinsci/docker/issues/263

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .