Docker:使用Jenkins構建Docker鏡像

 

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

1、介紹Jenkins

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

今天我須要使用Jenkins構建一個Docker鏡像,而後自動push到docker registry中。到了docker registry中,後面測試人員就能夠把鏡像發佈到測試環境,測試若是沒有問題就能夠發佈到線上環境,大概流程以下圖:node

Docker:使用Jenkins構建Docker鏡像

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

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

2、安裝Jenkins

1. 添加Jenkins的源(repository)github

2. 安裝JDKweb

 

3. 安裝Jenkinsdocker

 

到此,Jenkins就安裝完成了。而後就能夠啓動Jenkins。shell

Jenkins默認監控端口8080。bash

 

啓動若是出現錯誤:」Starting Jenkins -bash: /usr/bin/Java: No such file or directory」,表示Jenkins找不到java。這時就須要編譯配置文件/etc/init.d/jenkins,把java路徑加上便可。less

3、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日誌文件。

4、配置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鏡像

腳本內容

 

 

配置結束後,保存。

5、配置jenkins用戶

此時還不能當即構建,由於jenkins觸發腳本並非root用戶,所以須要將jenkins免密碼,並將用戶加入到docker組。

 

第一行表示僅jenkins用戶不須要控制終端,否則在Jenkins腳本中沒法使用sudo。

 

 

6、開始構建鏡像

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

構建完成後,能夠去Jenkins主機看看鏡像是否完成。

能夠看到已經構建完成了,下面直接啓動此鏡像。

 

 

7、推送到遠程倉庫

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

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

相關文章
相關標籤/搜索