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

sto*_*our 6 groovy jenkins docker jenkins-pipeline

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

docker.withServer('tcp://my.docker.host:2345') {
  def myImage = docker.build('myImage')
}
Run Code Online (Sandbox Code Playgroud)

当管道执行时,出现以下错误:script.sh:第2行:docker:命令未找到,就像docker命令仍在尝试在本地执行(本地未安装docker命令),而不是在我的远程Docker守护程序上执行。

我有什么想念的吗?尝试在远程服务器上执行Docker命令时,是否需要在本地安装docker命令?

Abh*_*ith 1

你有没有尝试过

withDockerServer('tcp://my.docker.host:2345') {
   .....
}
Run Code Online (Sandbox Code Playgroud)

文档在这里

  • 事实上,从我在 [Docker.groovy](https://github.com/jenkinsci/docker-workflow-plugin/blob/master/src/main/resources/org/jenkinsci/plugins/docker/workflow/ 中看到的Docker.groovy)似乎 docker 命令是使用代理上安装的可用 _docker_ 命令直接执行的。因此,使用 `withServer('tcp://my.docker.host:2345')` 只需将选项 `-H 'tcp://my.docker.host:2345'` 添加到您执行的命令中,这意味着当您想在远程服务器上执行 docker 命令时,您仍然需要在代理上安装 docker... (5认同)