直接以 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 的工作目錄

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/jenkins 將 MyJenkins 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/jenkins 將 oomusou/jenkins image 匯出成 MyJenkins.tar
  2. 硬碟已經產生 MyJenkins.tar

從 Tar 匯入成 Image


1
$ docker load -i MyJenkins.tar

使用 docker load 將 tar 檔匯入成 image。

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

docker017

  1. 輸入 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 並執行之。

docker018

Conclusion


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

▲