本篇告訴你:
- 如何在 Jenkins 中添加一個(gè)遠(yuǎn)程 Docker 作為構(gòu)建項(xiàng)目的 Cloud
- 如何在這個(gè) Cloud 中指定代碼倉庫并打包 Docker 鏡像
- 將鏡像 push 到官方的 Docker Hub 倉庫
目前Docker已經(jīng)成為眾多流水線中關(guān)鍵的組成部分之一。容器化具有的簡單性,靈活性以及隔離性可以讓我們定制特定的而且能夠精確重復(fù)的環(huán)境。容器化部署也越來越流行。
關(guān)于Docker的基本概念和使用方法,可以參見我寫的系列。
這里我需要兩臺(tái)主機(jī)(測(cè)試時(shí)可以是同一個(gè)機(jī)器),一臺(tái)運(yùn)行Jenkins,另一臺(tái)運(yùn)行Docker,作為Jenkins的代理節(jié)點(diǎn)。
當(dāng)Jenkins啟動(dòng)pipeline工作時(shí),同時(shí)連接并啟動(dòng)這個(gè)代理節(jié)點(diǎn),由他完成構(gòu)建鏡像的工作,當(dāng)流水線完成之后,Jenkins會(huì)停止并刪除運(yùn)行這些鏡像的容器,使用這種方法需要配置Docker插件
好處:Jenkins master 節(jié)點(diǎn)只負(fù)責(zé)調(diào)控,具體的構(gòu)建任務(wù)下放到Docker代理節(jié)點(diǎn)中去,解決master空間不夠等問題
安裝插件之后Jenkins的系統(tǒng)配置頁面會(huì)多出一個(gè)Cloud部分。
需要填寫連接Docker的配置信息
Name: 給Docker主機(jī)起個(gè)別名
Docker Host URI: 如 tcp://192.168.10.10:2375 ,連接本機(jī)Docker,如果連其他主機(jī)上的Docker服務(wù)端,需要Docker宿主機(jī)開放遠(yuǎn)程訪問,具體見Docker 學(xué)習(xí)系列21 遠(yuǎn)程連接Docker
image.png
集成Docker插件后,在管理Jenkins頁面中會(huì)多出一個(gè)Docker入口
image.png
點(diǎn)擊后能看到配置過的分配給Jenkins實(shí)例的Docker服務(wù)器列表
image.png
再點(diǎn)進(jìn)去能看到正在運(yùn)行的容器和擁有的鏡像
image.png
Cloud 構(gòu)建Docker鏡像并上傳到指定倉庫
接下來我們新建一個(gè) freestyle 項(xiàng)目
配置代碼倉庫,注意倉庫中要有Dockerfile,以我的這個(gè)公開倉庫為例
Build - Add build step 添加新的構(gòu)建步驟 - Build / Publish Docker Image
- Directory for Dockerfile: 因?yàn)镈ockerfile就在代碼中的根目錄,這里不填
- Cloud:選擇剛剛配置的 Docker Cloud 名字
- Image: 要打包上傳的鏡像名
- Registry Credentials: 注意這里,要添加一個(gè)類型是username/password的可以登錄docker倉庫的credentials
image.png
- 構(gòu)建,查看輸出信息
image.png
- 檢查
Docker Hub 可以看到剛剛上傳的鏡像
image.png
同時(shí)Docker Cloud中也多出了一個(gè)剛剛打包的鏡像
image.png
參考
https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-configuration-file
http://www.itdecent.cn/p/2ad009ae95ad
jenkins slave docker容器化







