2015-05-05 3 views
12

Я пытаюсь использовать плагин docker на Jenkins для запуска экземпляра существующего контейнера. Docker версия 1.6.0, построить 4749651с помощью плагина docker на jenkins -

Я выбрал «создать контейнер» Введенный идентификатор изображения для имени изображения, и попробовал множество http://172.16.42.43:4243, а также попытался пустой узел. я получаю эту ошибку:

ERROR: Build step failed with exception 
java.lang.NullPointerException: uri was not specified 
    at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:204) 
    at com.github.dockerjava.core.DockerClientConfig$DockerClientConfigBuilder.withUri(DockerClientConfig.java:406) 
    at org.jenkinsci.plugins.dockerbuildstep.DockerBuilder$DescriptorImpl.createDockerClient(DockerBuilder.java:123) 
    at org.jenkinsci.plugins.dockerbuildstep.DockerBuilder$DescriptorImpl.getDockerClient(DockerBuilder.java:201) 
    at org.jenkinsci.plugins.dockerbuildstep.DockerBuilder.perform(DockerBuilder.java:71) 
    at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20) 
    at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:779) 
    at hudson.model.Build$BuildExecution.build(Build.java:205) 
    at hudson.model.Build$BuildExecution.doRun(Build.java:162) 
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:537) 
    at hudson.model.Run.execute(Run.java:1744) 
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43) 
    at hudson.model.ResourceController.execute(ResourceController.java:98) 
    at hudson.model.Executor.run(Executor.java:374) 
Build step 'Execute Docker container' marked build as failure 

Может кто-нибудь сказать мне, как это исправить? Кроме того, если кто-либо использовал этот плагин раньше, пожалуйста, дайте мне знать, если это когда-либо срабатывало.

Также попробовал «Выполнить контейнер докеров» -> запустить контейнеры с указанным идентификатором контейнера, что привело к той же ошибке.

Другой подход: Я попытался с помощью Execute плагин оболочки в и я получаю эту ошибку:

+ docker start d023eec1ff34 
Post http:///var/run/docker.sock/v1.18/containers/d023eec1ff34/start: dial unix /var/run/docker.sock: permission denied. Are you trying to connect to a TLS-enabled daemon without TLS? 
time="2015-05-05T10:26:34-07:00" level=fatal msg="Error: failed to start one or more containers" 

Если я просто иду к терминалу, переключиться на пользователя Дженкинс и запустить докер команду запуска, он отлично работает. Если кто-то знает, как это исправить, это тоже здорово.

+0

докер версия? Проверьте журналы докеров (это может быть в /var/log/docker.log или в /var/log/upstart/docker.log, в зависимости от вашей ОС), а также попытайтесь запустить демон Docker в режиме отладки. см. --debug = true docs.docker.com/reference/commandline/cli/#daemon – user2915097

+0

Может быть, извлечение из http://serverfault.com/questions/639459/why-might-the-jenkins-user-not -have-permission-to-access-the-docker-unix-socket0 \t Я думаю, что предоставление привилегий группе jenkins для док-станции unix разрешает проблему. Это можно изменить, настроив параметры запуска демона-демона в файле конфигурации, добавив эту строку DOCKER_OPTS = '-G jenkins' В ubuntu/etc/default/docker находится файл конфигурации докера. – user2915097

+0

Я попытался добавить это к дефолту дженкинсов. Кроме того, я попытался добавить пользователя jenkins в группу докеров. Я сделал это на двух машинах без везения. – max

ответ

14

Предполагая, что Docker работает на той же машине, убедитесь, что для запуска Docker с:

-H tcp://127.0.0.1:4243 -H unix:///var/run/docker.sock

Затем перейдите к Управление Дженкинс> Конфигурация> Настройка системы затем прокрутите вниз до Докер Builder и в REST URL сервера Docker введите http://localhost:4243

Отредактировано: Я изначально сказал Docker прослушивать 0.0.0.0, который связывается со всеми IP-адресами и может разрешать подключения снаружи, если ваш брандмауэр пропускает трафик. Поэтому я обновил его, чтобы вместо этого привязать к loopback-адресу. Кроме того, в текущей версии документации рекомендуется использовать другой порт, но поскольку вы укажете порт вручную, любой порт будет работать.

+2

FYI 4243 является старым портом демона докеров, официальным оказался 2375 в конце – Alex

+1

Я бы очень рекомендовал использовать tcp: //127.0.0.1 вместо 0.0.0.0, так как вы, вероятно, не хотите предлагать докер к внешнему миру. – Nitek

+0

К какой команде вы снова даете эти флаги? – jonalv

3

Вы должны дать разрешения пользователя Jenkins использовать докер, купить, добавив его в докер группу, запустить

sudo usermod -a -G docker jenkins 
Смежные вопросы