2017-05-09 110 views
2

我正在使用Docker管道插件版本1.10。 我有我的詹金斯安装在一个容器中。我有一个运行Docker守护进程的远程服务器。守护进程可通过TCP(测试)从Jenkins机器访问。我禁用了Docker守护进程的TLS安全性。 我无法使docker.withServer(...)一步工作。 作为一个基本的测试,我只是把以下内容在Jenkinsfile(如果我是正确的,这是一个有效的管道内容):Jenkins管道:docker.withServer(...)不会在远程服务器上执行docker命令

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

当管道执行我得到这个错误:script.sh:行2:docker:command not found像docker命令仍然试图在本地执行(没有docker命令在本地安装)而不是在远程Docker守护进程中。

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

回答

1

你试过

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

文档here

+0

'withDockerServer(..)'被称为['withServer(...)'(https://github.com/jenkinsci /docker-workflow-plugin/blob/master/src/main/resources/org/jenkinsci/plugins/docker/workflow/Docker.groovy#L44)函数,所以我认为直接调用它不会改变任何东西。 – stour

+1

事实上,从我在[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 ... – stour

+0

我发现很多网络上出现误导的东西。截至2017年8月,我无法在Jenkins获得码头工人:2.73工作时无需将码头直接安装到容器中。最终,我遵循本指南:http://verbally.flimzy.com/installing-docker-1-12-debian-9-stretch/将docker 12安装到https://github.com的官方/社区维护容器中/jenkinsci/docker/blob/master/README.md。 之后,我可以使用'withDockerServer'并让它呼叫到其他服务器上的docker。 – Cognitiaclaeves

相关问题