使用 Docker 安裝 Jenkins 的最佳方式

說在前面

本篇內容很是簡單,講述瞭如何快速在 Docker 上部署一個 Jenkins 實例,避免多采坑,浪費沒必要要的練習時間。mysql

本文實驗環境:git

  • 操做系統:Centos 7.5
  • Docker Version:18.09.6

下載鏡像

打開終端,輸入docker search命令搜索 Docker Hub 上可用的 Jenkins 鏡像:github

$ 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標籤判斷,位列第1、名字爲jenkins的是 Jenkins 官方提供的鏡像。咱們是否是應該使用這個官方鏡像呢?sql

若是你看過 Jenkins 文檔中 Docker 安裝 小節,會發現官方推薦使用的鏡像是jenkinsci/blueocean,該鏡像包含當前的長期支持 (LTS) 的 Jenkins 版本 (能夠生產使用) ,並捆綁了全部 Blue Ocean 插件和功能。docker

博主第一次安裝的時候使用的是jenkins鏡像,其集成的 Jenkins 版本比較高,結果出現好多插件不兼容的狀況,對於我等小白來講是一件比較麻煩的事。bash

這裏咱們果斷使用jenkinsci/blueocean鏡像,使用docker pull命令拉取:tcp

$ 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。

Alt Text

管理員初始密碼被放到了/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

安裝過程請參考其相關文檔,此處再也不詳述。

相關資源

相關文章
相關標籤/搜索