说在前面

本篇内容非常简单,讲述了如何快速在 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

安装过程请参考其相关文档,此处不再详述。

相关资源

如何使用 Docker 安装 Jenkins的更多相关文章

  1. 使用Docker安装Jenkins

    Jenkins Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能. 环境准备 腾讯云 硬件配置: ...

  2. Docker的安装以及使用Docker安装jenkins,gogs,tomcat(一)

    (1)Docker的安装  官网安装链接 :https://yeasy.gitbooks.io/docker_practice/content/ 卸载旧版本 旧版本的 Docker 称为 docker ...

  3. docker 安装jenkins 发布 asp.net core 2.0

    安装Docker 其实安装Docker的过程,大家可以到Docker官网找到自己相对应的安装文档进行安装,Docker区分CE和EE的两个版本,具体这两个版本有什么区别,大家自行查阅相关资料,这里不再 ...

  4. docker 安装 jenkins 笔记

    前提: 已安装好 docker-ce,可运行 docker 命令 命令: sudo docker pull jenkins mkdir -p ~/dockers/jenkins cd ~/docker ...

  5. Mac 环境docker 安装jenkins

    网上很多的教程是讲的是Linux 上的Docker安装Jenkins,但是我用的是Mac,所以参考之前的前辈写的文章,记录一下自己的安装过程.非常感谢参考文章的前辈写的文章. 参考Docker安装Je ...

  6. Docker安装Jenkins打包Maven项目为Docker镜像并运行【保姆级图文教学】

    一.前言 Jenkins作为CI.CD的先驱者,虽然现在的风头没有Gitlab强了,但是还是老当益壮,很多中小公司还是使用比较广泛的.最近小编经历了一次Jenkins发包,感觉还不错,所以自己学习了一 ...

  7. docker 安装jenkins

    基于docker 进行安装 软件,首先需要有docker环境. 1.docker 下载 jenkins 镜像 指定版本 ,因为低版本的后面安装 软件会失败(亲测). docker pull jenki ...

  8. Linux Docker安装Jenkins

    安装环境 操作系统 centos7.3 安装Docker,安装及配置见 <Docker之Docker介绍及安装配置> 安装Jenkins 下载Jenkins 命令:sudo docker ...

  9. docker安装jenkins及其相关问题解决

    1.拉取镜像并启动容器 docker run -d -p 8080:8080 -p 50000:50000 -v $(pwd)/data:/var/jenkins_home --name jenkin ...

  10. Docker安装jenkins(六)

    这里是在linux环境下安装docker之后,在doucer内安装jenkins --------------------docker 安装 jenkins---------------------- ...

随机推荐

  1. WPF中实现PropertyGrid(用于展示对象的详细信息)的三种方式

    原文:WPF中实现PropertyGrid(用于展示对象的详细信息)的三种方式 由于WPF中没有提供PropertyGrid控件,有些业务需要此类的控件.这篇文章介绍在WPF中实现PropertyGr ...

  2. [自带避雷针]DropShadowEffect导致内存暴涨

    原文:[自带避雷针]DropShadowEffect导致内存暴涨  [自带避雷针]DropShadowEffect导致内存暴涨 周银辉 从学习WPF开始, 就知道"位图效果"不是什 ...

  3. Qt5.8 下链接 Mysql 错误以及解决方法(无论 Mysql 是什么版本的,64 位 Qt 要用 64 位的 Mysql 驱动,32 位的 Qt 要用 32 位的Mysql 驱动)

    Qt 5.8 下链接 Mysql(Windows 平台下),有朋友会出现一个这个无法连接的错误 QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: ...

  4. QT 等待对话框/进度--

    用QT的,加载的一张gif图片.记录下来以后免得忘记. #ifndef DIALOG_H #define DIALOG_H #include <QDialog> #include < ...

  5. 【windows】常见的系统环境变量,如%appdata%表示什么意思

    原文:[windows]常见的系统环境变量,如%appdata%表示什么意思 1.介绍 %appdata%就代表了C:Users\用户名\AppData\Roaming这个文件夹. “%”是系统变量的 ...

  6. 【Git】文件暂存与提交

    git工作目录文件的两种状态:已跟踪.未跟踪. 文件状态的变化周期: 查看当前文件状态: git status 跟踪新文件/暂存已修改文件 git add newfile 状态简览 git statu ...

  7. Win10《芒果TV》商店内测版更新至v3.1.6:率先支持Xbox One平台 - 参与反馈,赢取VIP奖励

    芒果TV For Win10商店内测版 v3.1.6 于2016年9月1日星期四下午正式登陆商店 主要是优化手机版视频下载相关设置.策略.风险提示,并升级兼容目标,率先支持Xbox One平台,覆盖更 ...

  8. C#串口控制舵机、arduino源码 及C#源码及界面

    原文 C#串口控制舵机.arduino源码 及C#源码及界面 1.舵机原理简介 控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压.它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基 ...

  9. UWP开发学习笔记3

    获取可视化状态列表 private void Button_Click(object sender, RoutedEventArgs e) { //获取CheckBox控件可视化树中的子元素数量 in ...

  10. WebApi实现验证授权Token,WebApi生成文档等 - CSDN博客

    原文:WebApi实现验证授权Token,WebApi生成文档等 - CSDN博客 using System; using System.Linq; using System.Web; using S ...