在jenkins上使用docker插件-

在jenkins上使用docker插件-,jenkins,docker,Jenkins,Docker,我正在尝试使用Jenkins上的docker插件来运行现有容器的实例。 Docker版本1.6.0,版本4749651 我选择了“创建容器” 输入映像名称的映像id,并尝试了主机,还尝试了空主机。 我不断地发现这个错误: ERROR: Build step failed with exception java.lang.NullPointerException: uri was not specified at com.google.common.base.Preconditions.c

我正在尝试使用Jenkins上的docker插件来运行现有容器的实例。 Docker版本1.6.0,版本4749651

我选择了“创建容器” 输入映像名称的映像id,并尝试了主机,还尝试了空主机。 我不断地发现这个错误:

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
+ 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"
有人能告诉我怎么修吗? 另外,如果有人曾经使用过这个插件,请让我知道这是否有效

还使用指定的容器id尝试了“Execute docker container”->启动容器,导致了相同的错误

另一种方法: 我尝试使用Execute shell插件,但出现以下错误:

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
+ 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"
如果我只是转到终端,切换到jenkins用户并运行docker start命令,它工作正常。
如果有人知道如何用这种方式修复,那也太好了。

假设Docker在同一台机器上运行,请确保使用以下工具运行Docker:

-Htcp://127.0.0.1:4243 -Hunix:///var/run/docker.sock

然后转到管理Jenkins>配置>配置系统,然后向下滚动至Docker Builder,并在Docker服务器REST url中输入
http://localhost:4243


编辑:我最初告诉Docker在0.0.0.0上监听,该0.0.0绑定到所有IP地址,如果防火墙允许流量通过,可以允许外部连接。所以我更新了它,将其绑定到环回地址。此外,当前版本的文档建议使用不同的端口,但由于您手动指定端口,因此任何端口都可以。

您需要授予Jenkins用户使用docker的权限,购买并将其添加到docker组,然后运行

sudo usermod -a -G docker jenkins

docker版本?检查docker的日志(它可能位于/var/log/docker.log或/var/log/upstart/docker.log中,具体取决于您的操作系统),并尝试在调试模式下启动docker守护程序,。请参阅--debug=true docs.docker.com/reference/commandline/cli/#daemon可能是这样,我认为将jenkins组权限授予docker unix套接字解决了这个问题。这可以通过在配置文件中配置docker daemon启动选项进行修改,方法是在ubuntu/etc/default/docker中添加以下行docker_OPTS='-G jenkins'是docker配置文件。我尝试将其添加到jenkins默认值中。此外,我还尝试将jenkins用户添加到docker组。我是在两台机器上做的,运气不好。我重新启动了詹金斯。此外,还检查了日志。它没有记录任何与jenkins的跑步相关的信息。为什么在使用插件时会抱怨uri?你有没有找到解决方法?FYI 4243是旧的docker守护程序端口,官方公布的最终结果是2375,我极力推荐使用tcp://127.0.0.1 而不是0.0.0.0,因为您可能不想向外界提供docker。@jonalv这些是docker守护程序的参数,而不是我的docker命令行工具,似乎什么都不起作用——在Docker Builder配置中点击“测试”按钮时,我一直在Jenkins日志中看到相同的错误。然后我意识到我需要保存配置,然后点击测试按钮!