Как разрешить Дженкинсу вызывать докер из контейнера - PullRequest
0 голосов
/ 21 января 2019

Я локально установил платформу OpenShift. Дженкинс был развернут там как докеризованное приложение. Мне нужно вызвать Docker во время выполнения задания Дженкинса, чтобы выполнить некоторые базовые операции Docker: build, push, pull.

К сожалению, Docker недоступен из контейнера Jenkins.

$ oc exec -it jenkins-1-cdjdx -- /bin/bash
$ docker
bash: docker: command not found

Насколько я понял, мне нужно установить плагин Docker и выполнить новый облачный элемент для глобальных настроек Jenkins. Поэтому я бы попытался описать Docker как новый облачный элемент, но, к сожалению, я не знаю, как определить URI узла Docker и порт.

1 Ответ

0 голосов
/ 21 января 2019

Плагин Docker не установит Docker в контейнер, он просто добавит поддержку Docker для Jenkins.

Вам необходимо установить докер-клиент внутри контейнера Jenkins. Я не знаю, какое изображение вы используете, но надеюсь, вы найдете правильный способ, как это сделать.

Чем у вас есть 2 способа заставить его работать:

  1. Подключите докер-сокет с хост-машины к вашему контейнеру. Это означает, что вам нужно смонтировать /var/run/docker.sock хостов по тому же пути в контейнере. В OpenShift вы также можете использовать опцию exposeDockerSocket для стратегии построения , но я не думаю, что вы используете эту функцию здесь. Но если вы запускаете его как обычный модуль, вам необходимо смонтировать его с помощью тома «hostPath». Кроме того, я думаю, что вам нужно будет изменить политику безопасности, отметьте , что вопрос.
  2. Запустите независимый Docker прямо в вашем контейнере, этот режим называется Docker-in-Docker. Вы можете погуглить, но я думаю, что первый вариант лучше в вашем случае.
...