如何使用 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:
detach,建立 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將MyJenkinscontainer 儲存成oomusou/jenkinsimage - 輸入
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/jenkinsimage 匯出成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/jenkinsimage
建立新的 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加以備份或傳給其他人