我目前正在試驗Docker與Jenkins的組合以簡化新項目的CI/CD工作流程。我在安裝了Docker 1.12的Mac上這樣做。無法讓Jenkins Docker從機構建Docker鏡像
這是我做的:
- 使用泊塢窗機創建一個新的泊塢服務器
- 使用詹金斯碼頭工人的官方圖片旋轉了該服務器上的詹金斯實例
- 安裝「然而,另一個Docker插件「和」CloudBees Docker Pipeline「插件。
- 添加一個「泊塢雲」使用泊塢窗服務器上面和第三方泊塢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鏡像,可以在盒子裏完成這個操作,對嗎?我錯過了什麼?
假設您按照上面提到的建議安裝docker套接字,以便Jenkins將其啓動的Docker容器將其放在/var/run/docker.sock中。由Jenkins創建的Docker容器中的步驟由某個用戶運行 - 該用戶是否可以訪問已安裝的Docker套接字?例如,docker組中的用戶是? – wujek
根據:https://go.cloudbees.com/docs/cloudbees-documentation/cje-user-guide/chapter-docker-workflow,我不認爲你需要'node('docker')'部分。 html 但是這不會解決您的問題..我有同樣的問題。你修好了嗎? – Stretch