2016-07-26 121 views
5

我目前正在試驗Docker與Jenkins的組合以簡化新項目的CI/CD工作流程。我在安裝了Docker 1.12的Mac上這樣做。無法讓Jenkins Docker從機構建Docker鏡像

這是我做的:

  1. 使用泊塢窗機創建一個新的泊塢服務器
  2. 使用詹金斯碼頭工人的官方圖片旋轉了該服務器上的詹金斯實例
  3. 安裝「然而,另一個Docker插件「和」CloudBees Docker Pipeline「插件。
  4. 添加一個「泊塢雲」使用泊塢窗服務器上面和第三方泊塢DIND圖像tehranian/DIND - 詹金斯 - 從

有了這個設置的IP,我運行一個非常簡單的流水線作業這樣的:

node('docker') { 
    docker.image('hseeberger/scala-sbt').inside { 
     stage 'Checkout' 
     echo 'We got here!' 
    } 
} 

Jenkins按預期旋轉了Docker實例並執行作業。所以基本的Docker設置按預期工作。

但作業中的Docker命令失敗。日誌輸出看起來是這樣的:

[Pipeline] node 
Still waiting to schedule task 
Docker-23ebf3d8dd4f is offline 
Running on Docker-23ebf3d8dd4f in /home/jenkins/workspace/docker-test 
[Pipeline] { 
[Pipeline] sh 
[docker-test] Running shell script 
+ docker inspect -f . hseeberger/scala-sbt 

Cannot connect to the Docker daemon. Is the docker daemon running on this host? 
[Pipeline] sh 
[docker-test] Running shell script 
+ docker pull hseeberger/scala-sbt 
Using default tag: latest 
Warning: failed to get default registry endpoint from daemon (Cannot connect to the Docker daemon. Is the docker daemon running on this host?). Using system default: https://index.docker.io/v1/ 
Cannot connect to the Docker daemon. Is the docker daemon running on this host? 
[Pipeline] } 
[Pipeline] // node 
[Pipeline] End of Pipeline 

現在,當我瀏覽周圍的解決方案,它通常提到多克爾插座需要提供到容器的體積,但似乎沒有任何工作。

由於一般的設置似乎正在工作,奴隸不會只需要做同樣的事情,詹金斯插件首先啓動Docker奴隸?也就是說,使用Docker服務器的URL來控制它?因爲我認爲這是一個非常常見的用例,所以Jenkins Docker的奴隸必須有一個Docker鏡像,可以在盒子裏完成這個操作,對嗎?我錯過了什麼?

+0

假設您按照上面提到的建議安裝docker套接字,以便Jenkins將其啓動的Docker容器將其放在/var/run/docker.sock中。由Jenkins創建的Docker容器中的步驟由某個用戶運行 - 該用戶是否可以訪問已安裝的Docker套接字?例如,docker組中的用戶是? – wujek

+0

根據:https://go.cloudbees.com/docs/cloudbees-documentation/cje-user-guide/chapter-docker-workflow,我不認爲你需要'node('docker')'部分。 html 但是這不會解決您的問題..我有同樣的問題。你修好了嗎? – Stretch

回答

0

您可能需要設置docker env並在運行的shell腳本中使用docker-machine env node的內容。

+0

由於雞與雞蛋的情況,這將不起作用:如果沒有正在運行的Docker安裝,該命令將不會運行。 – Lunikon

相關問題