說在前面
本篇內容非常簡單,講述了如何快速在 Docker 上部署一個 Jenkins 實例,避免多采坑,浪費不必要的練習時間。
本文實驗環境:
- 操作系統:Centos 7.5
- Docker Version:18.09.6
下載鏡像
打開終端,輸入docker search
命令搜索 Docker Hub 上可用的 Jenkins 鏡像:
$ docker search jenkins
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
jenkins Official Jenkins Docker image 4328 [OK]
jenkins/jenkins The leading open source automation server 1563
jenkinsci/blueocean https://jenkins.io/projects/blueocean 399
jenkinsci/jenkins Jenkins Continuous Integration and Delivery … 367
jenkinsci/jnlp-slave A Jenkins slave using JNLP to establish conn… 110 [OK]
jenkins/jnlp-slave a Jenkins agent (FKA "slave") using JNLP to … 86 [OK]
...
根據鏡像OFFICIAL
標簽判斷,位列第一、名字為jenkins
的是 Jenkins 官方提供的鏡像。我們是不是應該使用這個官方鏡像呢?
如果你看過 Jenkins 文檔中 Docker 安裝 小節,會發現官方推薦使用的鏡像是jenkinsci/blueocean
,該鏡像包含當前的長期支持 (LTS) 的 Jenkins 版本 (可以生產使用) ,並捆綁了所有 Blue Ocean 插件和功能。
博主第一次安裝的時候使用的是
jenkins
鏡像,其集成的 Jenkins 版本比較高,結果出現好多插件不兼容的情況,對於我等小白來說是一件比較麻煩的事。
這里我們果斷使用jenkinsci/blueocean
鏡像,使用docker pull
命令拉取:
$ docker pull jenkinsci/blueocean
Using default tag: latest
latest: Pulling from jenkinsci/blueocean
Digest: sha256:523769431f19830cfda7ceae37c59c9f01affb551836933aa30114dcaa5df9eb
Status: Image is up to date for jenkinsci/blueocean:latest
在本地鏡像倉庫確認是否已存在:
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
jenkinsci/blueocean latest ef2dc74fe285 21 hours ago 552MB
mysql latest 990386cbd5c0 2 months ago 443MB
jenkins latest cd14cecfdb3a 11 months ago 696MB
...
運行容器
現在,就可以基於下載的鏡像運行 Jenkins 容器了,有以下兩種運行方式供你參考:
方式一:直接運行,運行期間產生的所有數據都保存在容器內部,容器銷毀,數據丟失。
docker run \
--name jenkins-blueocean \
-d \
-p 8081:8080 \
-p 50001:50000 \
jenkinsci/blueocean
方式二:Docker 會在宿主機上創建一個數據卷jenkins-data
,容器映射該卷以持久化數據。
docker run \
--name jenkins-blueocean \
-d \
-p 8080:8080 \
-p 50000:50000 \
-v jenkins-data:/var/jenkins_home \
jenkinsci/blueocean
Tips:8080 端口用來公開訪問 Web 界面,50000 端口允許訪問遠程 Java (JIRA) API。
這里我使用了第二種方式啟動了 一個 Jenkins 容器應用:
$ docker run \
--name jenkins-blueocean \
-d \
-p 8080:8080 \
-p 50000:50000 \
-v jenkins-data:/var/jenkins_home \
jenkinsci/blueocean
93f88d6ca2129fae971298e98e20091570f6903463b203a9235660856f63020e
最后使用docker ps
命令確認容器是否已經后台運行:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0cad9bbe76a6 jenkinsci/blueocean "/sbin/tini -- /usr/…" About an hour ago Up About an hour 0.0.0.0:8080->8080/tcp, 0.0.0.0:50000->50000/tcp jenkins-blueocean
配置 Jenkins
以上如果一切正常,現在就可以通過http://<ipaddress>:8080
訪問 Jenkins 的 Web 界面了。
Step1:解鎖 Jenkins。
管理員初始密碼被放到了/var/jenkins_home/secrets/initialAdminPassword
文件中。
因為我們把 Jenkins 部署在了 Docker 容器中,因此需要先進入到容器,再去查看對應的文件initialAdminPassword
內容:
$ docker exec -it jenkins-blueocean /bin/bash
jenkins@93f88d6ca212:/$ cat /var/jenkins_home/secrets/initialAdminPassword
a6f6d08fcc474178833001d1fc79be62
如上輸出中,a6f6d08fcc474178833001d1fc79be62
便是我們需要的管理員密碼,復制並粘貼到 Web 界面,點擊繼續即可解鎖 Jenkins。
Step2:安裝插件。
Jenkins 可以說完全由插件來驅動的,所以安裝一些基礎的插件是非要必要的,這里我們選擇 安裝推薦的插件 ,然后靜靜地等待插件安裝完成即可。
Step3:創建用戶。
接着繼續下一步操作,提示需要創建一個新的用戶,自行填寫即可。
Step4:配置實例。
看看提示,沒有問題就點 保存並完成 即可。
至此,Jenkins 初始化配置過程也就完成了。正式開啟你的 持續集成&持續部署 之旅吧!
更換主題
如果你不喜歡 Jenkins 官方默認頁面樣式,你可以嘗試通過如下項目更換一套基於 Material Design 設計的主題。
https://github.com/afonsof/jenkins-material-theme
安裝過程請參考其相關文檔,此處不再詳述。