如何使用 Docker 安裝 Jenkins ?
若要在 macOS 執行 Jenkins,由於 Jenkins 是由 Java 開發,當然可以直接在 macOS 安裝原生的 Jenkins,若是測試與學習的角度,更好的選擇就是安裝 Docker 版的 Jenkins,若要移除 Jenkins,直接刪除 Docker 的 container 與 image 即可,不會污染到 macOS 環境。
Version
macOS High Sierra 10.13.3
Docker for Mac 17.20.0-ce-mac49 (21995)
Jenkins 2.89.4
下載 Docker Image
1 | $ docker run -d --name MyJenkins -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts |
使用 docker run
由 image 建立 container 並執行之。
- -d:
d
etach,建立 container 後,就脫離目前 process - —name : 替 container 取一個人能夠識別的名字
MyJenkins
(若省略,Docker 將隨機命名,將來不易維護) - -p : Docker 外部與 Jenkins 內部所對應的 port,其中左邊為外部 Docker 的 port,右邊為 Jenkins 內部的 port
- -v : 建立
JENKINS_HOME
環境變數,其目錄在/var/jenkins_home
,為 Jenkins 的工作目錄
docker run
除了建立 container 外,還會順便執行 container。
Unlock Jenkins
Jenkins 一旦啟動後,就必須在 browser 設定 Jenkins,安裝 plugin。
一開始會要求輸入 Administrator password,並提示預設密碼已經寫在 /var/jenkins_home/secrets/initialAdminPassword
。
由於我們現在是使用 Docker,因此該目錄是在 container 內,而不是在 host,因此要進入 container 內讀出 initialAdminPassword
。
1 | $ exec -it MyJenkins bash |
先進入 Jenkins 的 terminal,再將密碼 cat
出來。
- 輸入
exec it MyJenkins bash
進入 Jenkins terminal - 輸入
cat /var/jenkins_home/secrets/initialAdminPassword
顯示密碼
Customize Jenkins
選擇 Install suggested plugins
安裝預設 plugin。
Getting Started
需要一些時間安裝 plugin。
Create Admin User
建立管理者密碼,按 Save and Finish
繼續。
Start Using Jenkins
按 Start using Jenkins
結束 Jenkins
設定。
Welcome to Jenkins
熟悉的 Jenkins 設定介面已經呈現,Jenkins 到此算安裝完成。
將 Container 儲存成 Image
目前為止 Jenkins 已經設定好,也安裝了預設 plugin,所以在 container 內的 /var/jenkins_home
已經有不少資料,我們將以目前 container 儲存成 image,將來若 Jenkins container 被我們玩壞了,可以直接再以此 image 建立全新 container,或者將新的 image 匯出成 tar
,可將此 tar
加以備份,或者將 tar
檔交給其他人匯入成 image。
1 | $ docker commit MyJenkins oomusou/jenkins |
使用 docker commit
將 container 儲存成自己的 image。
- 輸入
docker commit MyJenkins oomusou/jenkins
將MyJenkins
container 儲存成oomusou/jenkins
image - 輸入
docker images
可以看到oomusou/jenkins
已經新增
將 Image 匯出成 Tar
1 | $ docker save -o MyJenkins.tar oomusou/jenkins |
使用 docker save
將 image 匯出成 tar
檔。
- -o : 指定匯出
tar
檔的檔名
- 輸入
docker save -o MyJenkins.tar oomusou/jenkins
將oomusou/jenkins
image 匯出成MyJenkins.tar
- 硬碟已經產生
MyJenkins.tar
從 Tar 匯入成 Image
1 | $ docker load -i MyJenkins.tar |
使用 docker load
將 tar
檔匯入成 image。
- -i : 指定匯入
tar
檔的檔名
- 輸入
docker load -i MyJenkins.tar
將MyJenkins.tar
匯入成oomusou/jenkins
image
建立新的 Container
1 | $ docker run --name MyJenkins -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home oomusou/jenkins |
使用 docker run
由 image 建立 container 並執行之。
Conclusion
- 若使用 Jenkins Docker,則整個過程分成 Docker 操作與 Jenkins 設定部分
- 可將最後設定好的 Jenkins 儲存成 image 與
tar
,可將tar
加以備份或傳給其他人