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命令..?
'withDockerServer(..)'被稱爲['withServer(...)'(https://github.com/jenkinsci /docker-workflow-plugin/blob/master/src/main/resources/org/jenkinsci/plugins/docker/workflow/Docker.groovy#L44)函數,所以我認爲直接調用它不會改變任何東西。 – stour
事實上,從我在[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
我發現很多網絡上出現誤導的東西。截至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