Docker:使用Jenkins構建Docker鏡像


 

 Docker  彭東穩  1年前 (2016-12-27)  10709次瀏覽  已收錄  0個評論

一、介紹Jenkins

Jenkins是一個開源項目,提供了一種易於使用的持續集成系統,使開發者從繁雜的集成中解脫出來,專注於更為重要的業務邏輯實現上。同時Jenkins能實施監控集成中存在的錯誤,提供詳細的日志文件和提醒功能,還能用圖表的形式形象地展示項目構建的趨勢和穩定性。並且Jenkins提供了大量的插件,能夠完成各種任務。

今天我需要使用Jenkins構建一個Docker鏡像,然后自動push到docker registry中。到了docker registry中,后面測試人員就可以把鏡像發布到測試環境,測試如果沒有問題就可以發布到線上環境,大概流程如下圖:

Docker:使用Jenkins構建Docker鏡像

上圖就是我生產使用方式,其中Jenkins master使用docker的好處就是方便后面遷移,而Jenkins slave不適用docker的原因就是在docker中再次安裝docker進行鏡像構建太麻煩了,索性直接使用主機。而registry部分有兩個節點,他們之間的數據使用DRBD同步,外借助於haproxy+keepalived實現registry的高可用。

下面先介紹Jenkins構建docker鏡像,在使用Jenkins構建Docker鏡像之前,最好先看一下Docker:使用Dockerfile構建Nginx鏡像。更有助於理解。

二、安裝Jenkins

1. 添加Jenkins的源(repository)

2. 安裝JDK

 

3. 安裝Jenkins

 

到此,Jenkins就安裝完成了。然后就可以啟動Jenkins。

Jenkins默認監控端口8080。

 

啟動如果出現錯誤:”Starting Jenkins -bash: /usr/bin/Java: No such file or directory”,表示Jenkins找不到java。這時就需要編譯配置文件/etc/init.d/jenkins,把java路徑加上即可。

三、Jenkins文件說明

/usr/lib/jenkins/:jenkins安裝目錄,WAR包會放在這里。

 /etc/sysconfig/jenkins:jenkins配置文件,其”端口”,”JENKINS_HOME”等都可以在這里配置。

/var/lib/jenkins/:默認的JENKINS_HOME。

/var/lib/jenkins/jobs/${project_name}/workspace/:Jenkins項目的工作空間,存儲從Git或SVN下載的內容,${project_name}就是其項目名稱。

/var/log/jenkins/jenkins.log:Jenkins日志文件。

四、配置Jenkins構建鏡像

如果沒有特別配置端口,使用http://<ip address>:8080/登錄Jenkins,並進行相關配置(插件安裝、權限配置、View/Job創建等等)。

第一次登陸Jenkins時需要解鎖,把如下秘鑰填寫進去即可。

Docker:使用Jenkins構建Docker鏡像

然后設置一下用戶密碼,就正式進入到了Jenkins配置界面。

首先,需要安裝一些必要的插件SCM Sync Configuration Plugin ,GitHub plugin ,GIT plugin ,GIT client plugin,在系統管理->插件管理里面安裝,安裝結束后重啟jenkins即可。

然后創建一個項目為nginx。

Docker:使用Jenkins構建Docker鏡像

然后配置一下源碼管理,Git地址:https://github.com/dongwenpeng/nginx

就下面幾個文件,主要是dockerfile,然后提供了一些nginx配置文件以及web文件。

 

如下配置,也可以使用你本地的Git倉庫:

Docker:使用Jenkins構建Docker鏡像

主要就是構建腳本了。

Docker:使用Jenkins構建Docker鏡像

腳本內容

 

 

配置結束后,保存。

五、配置jenkins用戶

此時還不能立即構建,因為jenkins觸發腳本並不是root用戶,因此需要將jenkins免密碼,並將用戶加入到docker組。

 

第一行表示僅jenkins用戶不需要控制終端,不然在Jenkins腳本中無法使用sudo。

 

 

六、開始構建鏡像

在jenkins的build記錄中可以看到輸出,由於jenkins會自動把github上的文件給下載下來放在workspace目錄中。因此,觸發腳本后,直接開始構建nginx鏡像。

構建完成后,可以去Jenkins主機看看鏡像是否完成。

可以看到已經構建完成了,下面直接啟動此鏡像。

 

 

七、推送到遠程倉庫

現在使用Jenkins構建Docker鏡像已經沒有問題了,下面就可以把Jenkins構建完的鏡像直接推送到遠程的registry中。關於構建私有docker registry可以看Docker:搭建私有倉庫(Registry 2.4)

當遠程倉庫搞定后,其實Jenkins這邊做的並不是太多,只需要把構建腳本修改一下,在構建完成后直接推送到遠程倉庫就OK了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM