code

2014年10月11日 星期六

使用Docker安裝Jenkins on CentOS6 - Installation Jenkins on Docker

Docker,今年開始竄紅的一項工具技術。如果用Maven來比較,Maven能透過設定,幫我們佈建專案複雜的過程。Docker就是再更上一層,可以到安裝平台、安裝軟體軟體及設定。

本系列的目標,是介紹Jenkins Slave,並使用Docker來建立Slave。開始前,我們必需先有一套Docker!

注意,本篇內容已不適用於 kernel 2.6 (CentOS 6.x),確認方式如下  
[root@localhost]# uname -r
2.6.32-431.el6.x86_64

目標情境

使用Docker安裝官方版本的Jenkins

第一步:安裝與啟動 Docker

Docker的套件內容,必需安裝EPEL才讀取的到,而CentOS 7 以前,安裝的Docker 套件名稱是 docker-io 在CentOS7開始才是 docker。別裝錯囉!

wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
sudo rpm -Uvh epel-release-6*.rpm
sudo yum -y install docker-io*
sudo service docker start
sudo chkconfig docker on 

以上的指令,前兩行是取得EPEL的套件支援,三四行是安裝docker及啟動,最未行是設定開機時自動啟動docker。如果你的作業系統不是CentOS,也可以參考Docker官方的安裝教學

第二步:安裝官方版本 Jenkins 

使用 pull 指令,從docker hub 取回官方版本的Jenkins,建議指定版本 1.565.3。pull 的過程會需要點時間。
sudo docker pull jenkins:1.565.3 

Docker內的Jenkins只是個容器,本身是不應該存放任何動態產生的設定或是資料,先建立Docker容器外的目錄,用以存放Jenkins所產生的設定及資料。在CentOS + Jenkins官方的版本中,預設的user id 是 1000。
mkdir /home/jenkins_dir
chown 1000:docker /home/jenkins_dir

啟動Jenkins吧!
docker run -p 8080:8080 -v /home/jenkins_dir:/var/jenkins_home jenkins:1.565.3

燒燙燙的Jenkins立刻就啟動囉!


第三步:認識基本 docker 指令 

這篇主角不是Jenkins,是Docker!

docker pull NAME[:TAG]
docker pull jenkins:1.565.3  
一個開我們使用的pull指令,是讓docker去下載一個指定的來源(NAME)。並指定來源的版本(TAG),但這是選填的,如果沒有指定版本,預設會使用最新的來源(lastest)

目前Jenkins官方釋出的Docker版本,可以在此網址中的TAG項目裡找到清單 https://registry.hub.docker.com/_/jenkins/tags/manage/

docker images NAME
docker images jenkins
docker images 指令可以查詢目前已pull回來的image的清單及簡易的資訊內容,如下圖

docker run -p 8080:8080 -v /home/jenkins_dir:/var/jenkins_home jenkins:1.565.3
docker run 啟動一個docker container!   最後一個參數為指定的images

  • -p 端口對應設定 format hostPort:containerPort 左邊是本機的port,右邊則是docker container內的port
  • -v 掛載目錄 同樣的左邊是本機的目錄位置,右邊是docker內掛載的位置


Docker 運作的原理,大至上是先有一個平台(FROM),然後記下所有安裝過程的指令,成為一個DockerFile,也就是本篇看到的『jenkins:1.565.3』。這意味著,我們可以將Jenkins安裝的過程,包含套件等,打包成一個DockerFile,就可以讓所有安裝Jenkins 主機省去設定的煩腦。更新,也只要更新DockerFile。Docker這個想法與Jenkins的設計一拍即合,特別是Jenkins-slave。

Reference


1 則留言:

  1. 您好:

    我是從iT邦幫忙(http://ithelp.ithome.com.tw/articles/10159369)看到這一系列關於Jenkins的精彩分享文章。想請問之後還有將它們完成的計畫嗎?

    感謝~

    回覆刪除