iT邦幫忙

DAY 16
0

探索 Jenkins-CI 從認識到應用系列 第 16

16. Docker - Docker, Docker, Docker Slave篇 (上)

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

Docker,不扣不折的懶人包生成工具。

本篇同步發表於:http://www.gibar.co/2014/10/Installation-Jenkins-on-Docker.html (好讀版)

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

目標情境

使用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<span style="color:#A9A9A9"> </span>

一個開我們使用的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。

在將Docker與Jenkins-slave整合前,是應該先好好的認識一下Jenkins-slave是在做什麼事。

下一篇:Slave - Jenkins 的奴役制度,主人我準備好上工了 (中)

本篇同步發表於:http://www.gibar.co/2014/10/Installation-Jenkins-on-Docker.html (好讀版)
Reference


上一篇
15. Matrix [2][0] - 利用Jenkins進行相依性測試 (下)
系列文
探索 Jenkins-CI 從認識到應用16
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言