在jenkins上使用docker插件 -

max*_*max 13 jenkins docker

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

我选择了"创建容器"输入图像名称的图像ID,并尝试了主机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
Run Code Online (Sandbox Code Playgroud)

有人能告诉我如何解决它吗?此外,如果有人之前使用过这个插件,请告诉我这是否有用过.

还尝试了"执行docker container" - >使用指定的容器id启动容器导致相同的错误.

另一种方法:我尝试使用Execute shell插件,我收到此错误:

+ 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"
Run Code Online (Sandbox Code Playgroud)

如果我只是去终端,切换到jenkins用户并运行docker start命令,它工作正常.如果有人知道如何以这种方式修复它,那也会很棒.

And*_*oso 15

假设Docker在同一台机器上运行,请确保运行Docker:

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

然后转到Manage Jenkins> Configuration> Configure System,然后向下滚动到Docker Builder并在Docker服务器REST url中输入http://localhost:4243

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

  • FYI 4243是旧的码头守护进程端口,最终官方终端为2375 (2认同)
  • 我强烈建议使用 tcp://127.0.0.1 而不是 0.0.0.0,因为您可能不想向外界提供 docker。 (2认同)