Jenkins管道:docker.withServer(...)不在远程服务器上执行docker命令

时间:2017-05-09 07:21:22

标签: docker jenkins groovy jenkins-pipeline

我正在使用Docker Pipeline Plugin 1.10版。 我将Jenkins安装在一个容器中。我有一个运行Docker守护程序的远程服务器。可以通过TCP(已测试)从Jenkins机器访问该守护程序。我在Docker守护程序上禁用了TLS安全性。 我无法使docker.withServer(...)步骤工作。 作为基本测试,我只是将以下内容放在Jenkins文件中(如果我是正确的,这是一个有效的管道内容):

docker.withServer('tcp://my.docker.host:2345') {
  def myImage = docker.build('myImage')
}

当管道执行时,我收到此错误: script.sh:第2行:docker:command not found ,就像docker命令仍在尝试在本地执行(那里)是没有本地安装的docker命令)而不是我的远程Docker守护进程。

我错过了什么吗?尝试在远程服务器上执行Docker命令时是否需要在本地安装docker命令..?

3 个答案:

答案 0 :(得分:1)

你试过吗

withDockerServer('tcp://my.docker.host:2345') {
   .....
}

文档here

答案 1 :(得分:0)

docker需要安装在jenkins master上,以便jenkins能够在my.docker.host上启动docker。

  • 第一个docker命令在jenkins master上运行,但带有将命令传递给my.docker.host的参数
  • 然后容器本身将在my.docker.host上运行

请注意,您只需要在jenkins主服务器上安装docker;守护进程不需要在jenkins master上运行。

答案 2 :(得分:0)

检查是否正确设置了端口。守护程序的默认端口为2375。必须在docker守护程序(选项-H 0.0.0.0:2375)和jenkins客户端上都进行检查

相关问题