直接以 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 並執行之。

  • -dd etach,建立 container 後,就脫離目前 process
  • —name : 替 container 取一個人能夠識別的名字 MyJenkins (若省略,Docker 將隨機命名,將來不易維護)
  • -p : Docker 外部與 Jenkins 內部所對應的 port,其中左邊為外部 Docker 的 port,右邊為 Jenkins 內部的 port
  • -v : 建立 JENKINS_HOME 環境變數,其目錄在 /var/jenkins_home,為 Jenkins 的工作目錄

docker001

  1. docker run 除了建立 container 外,還會順便執行 container。

Unlock Jenkins


docker002

Jenkins 一旦啟動後,就必須在 browser 設定 Jenkins,安裝 plugin。

一開始會要求輸入 Administrator password,並提示預設密碼已經寫在 /var/jenkins_home/secrets/initialAdminPassword

由於我們現在是使用 Docker,因此該目錄是在 container 內,而不是在 host,因此要進入 container 內讀出 initialAdminPassword

1
2
$ exec -it MyJenkins bash
jenkins@54ceef740712:/$ cat /var/jenkins_home/secrets/initialAdminPassword

先進入 Jenkins 的 terminal,再將密碼 cat 出來。

docker009

  1. 輸入 exec it MyJenkins bash 進入 Jenkins terminal
  2. 輸入 cat /var/jenkins_home/secrets/initialAdminPassword 顯示密碼

Customize Jenkins


docker010

選擇 Install suggested plugins 安裝預設 plugin。

Getting Started


docker011

需要一些時間安裝 plugin。

Create Admin User


docker012

建立管理者密碼,按 Save and Finish 繼續。

Start Using Jenkins


docker013

Start using Jenkins 結束 Jenkins 設定。

Welcome to Jenkins


docker014

熟悉的 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。

docker015

  1. 輸入 docker commit MyJenkins oomusou/jenkinsMyJenkins container 儲存成 oomusou/jenkins image
  2. 輸入 docker images 可以看到 oomusou/jenkins 已經新增

將 Image 匯出成 Tar


1
$ docker save -o MyJenkins.tar oomusou/jenkins

使用 docker save 將 image 匯出成 tar 檔。

  • -o : 指定匯出 tar檔的檔名

docker016

  1. 輸入 docker save -o MyJenkins.tar oomusou/jenkinsoomusou/jenkins image 匯出成 MyJenkins.tar
  2. 硬碟已經產生 MyJenkins.tar

從 Tar 匯入成 Image


1
$ docker load -i MyJenkins.tar

使用 docker loadtar 檔匯入成 image。

  • -i : 指定匯入 tar檔的檔名

docker017

  1. 輸入 docker load -i MyJenkins.tarMyJenkins.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 並執行之。

docker018

Conclusion


  • 若使用 Jenkins Docker,則整個過程分成 Docker 操作與 Jenkins 設定部分
  • 可將最後設定好的 Jenkins 儲存成 image 與 tar,可將 tar 加以備份或傳給其他人
2018-02-28