运维 | 使用 Docker 安装 Jenkins | Jenkins
前言
本期内容主要是为了学习如何通过 Docker 安装Jenkins,仅作为记录与参考,希望对大家有所帮助。
准备工作
- 系统:CentOS 7.9
- 配置:4c8g
快速安装
下面以 Docker 方式安装 Jenkins 为例
环境搭建
- Docker 安装文档:docs.docker.com/engine/inst...
- Docker Compose 安装文档:docs.docker.com/compose/ins...
安装 Docker
- 确保 yum 包更新到最新
sql
yum update
- 卸载旧版本
arduino
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
- 设置仓库源
arduino
yum install -y yum-utils
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
- 开始安装
bash
#由于repo中默认只开启stable仓库,故这里安装的是最新稳定版
yum install docker-ce docker-ce-cli containerd.io
- 启动和开机启动
bash
systemctl start docker
systemctl enable docker
-
验证安装是否成功
docker version
安装 Docker Compose
以下为 Docker Compose独立安装方式,其它方式可参考官方文档
- 独立安装 Compose
bash
curl -SL https://github.com/docker/compose/releases/download/v2.12.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
- 命令执行失败
bash
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
- 设置文件或文件夹权限
bash
chmod +x /usr/local/bin/docker-compose
-
校验是否安装成功
docker-compose version
安装Jenkins
Jenkins中文官网:www.jenkins.io/zh/
使用 Docker Compose 部署
- 在系统任意位置创建一个文件夹,此文档以
~/opt/docker/jenkins
为例
bash
mkdir -p ~/opt/docker/jenkins && cd ~/opt/docker/jenkins
创建一些必要的文件或文件夹,保持目录结构如下示例:
arduino
mkdir -p ./{config,data,logs}
arduino
.
├── docker
│ └── jenkins
│ ├── docker-compose.yml
│ ├── data
│ └── config
│ └── logs
这个仅为参照,大家可按照自己的喜好即可。
注意:后续操作中,jenkins 产生的所有数据都会保存在这个目录,请妥善保存。
- 创建
docker-compose.yaml
yaml
version: '3'
services: # 集合
docker_jenkins:
user: root # 为了避免一些权限问题 在这我使用了root
privileged: true
restart: always # 重启方式
image: jenkins/jenkins:lts # 指定服务所使用的镜像 在这里我选择了 LTS (长期支持)
container_name: jenkins # 容器名称
ports: # 对外暴露的端口定义
- 8082:8080 # 访问Jenkins服务端口
- 50000:50000
environment:
TZ: Asia/Shanghai
volumes: # 卷挂载路径
- ./data:/var/jenkins_home
- /var/run/docker.sock:/var/run/docker.sock
- /usr/bin/docker:/usr/bin/docker # 这是为了我们可以在容器内使用docker命令
- /usr/local/bin/docker-compose:/usr/local/bin/docker-compose
/usr/share/jenkins
包含了一些 Jenkins 的配置,比如:插件之类的,有需要也可以映射到宿主机中
-
启动服务
docker-compose up -d
实时查看日志:
docker-compose logs -f
- 访问地址
安装完成后访问地址:http://{部署Jenkins所在服务IP}:8080
此处会有几分钟的等待时间
使用 Docker 部署
- 在系统任意位置创建一个文件夹,此文档以
~/opt/docker/jenkins
为例
bash
mkdir -p ~/opt/docker/jenkins && cd ~/opt/docker/jenkins
创建一些必要的文件或文件夹,保持目录结构如下示例:
arduino
.
├── docker
│ └── jenkins
│ ├── data
│ └── config
│ └── logs
- 启动服务
bash
docker run \
-u root \
--rm \
-d \
-p 8080:8080 \
-p 50000:50000 \
-v /opt/docker/jenkins/data:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
--name jenkins \
jenkins/jenkins:lts
查看运行日志:
less
docker ps // 查看containerId
docker logs [ID | NAME]
查看实时日志:
css
docker logs -f [ID | NAME]
注意检查8080是否已经占用!如果占用修改端口
- 访问地址
安装完成后访问地址:http://{部署Jenkins所在服务IP}:8080
此处会有几分钟的等待时间
使用指南
初始化
详情见官网教程:www.jenkins.io
解锁 Jenkins
- 方式一
进入Jenkins容器:docker exec -it {Jenkins容器名} bash
例如: docker exec -it jenkins bash
查看密码:cat /var/jenkins_home/secrets/initialAdminPassword
复制密码到输入框里面

- 方式二
查看日志获取密码
css
docker logs -f [ID|NAME]
或
docker-compose logs -f

正确输入密码后,按照推荐的指示引导操作,等到引导安装结束后进入Jenkins主页。
默认插件
无特别要求就选择推荐插件安装即可

创建管理员用户

重要配置
配置地址与邮箱

插件管理
安装 git paremeters
- 搜索插件
-
进入
首页
--系统管理
--插件管理
--可选插件
界面 -
搜索
git paremeters
插件,点击安装即可

- 配置插件
- 在项目常规项中勾选
This project is parameterized
,并选择Git Parameter



安装 nodejs
- 搜索插件
-
进入
首页
--系统管理
--插件管理
--可选插件
界面 -
搜索
nodejs
插件,点击安装即可

- 配置插件
- 进入
首页
--系统管理
--全局工具配置
界面 - 找到
NodeJS
配置栏

安装 Publish Over SSH
- 搜索插件
-
进入
首页
--系统管理
--插件管理
--可选插件
界面 -
搜索
ssh
插件,点击安装即可

- 配置插件
- 进入
首页
--系统管理
--全局工具配置
界面 - 找到
SSH Servers
配置栏

安装 Maven
- 搜索插件
-
进入
首页
--系统管理
--插件管理
--可选插件
界面 -
搜索
Maven Integration
插件,点击安装即可

- 配置插件
- 进入
首页
--系统管理
--全局工具配置
界面 - 找到
maven--maven
配置栏

安装中文语言
- 搜索插件
-
进入
首页
--系统管理
--插件管理
--可选插件
界面 -
搜索
Locale
插件,点击安装即可

安装完成后,在地址栏路径后输入 /restart
,将重启 Jenkins
- 配置插件
- 进入
首页
--系统管理
--系统配置
界面 - 找到
Default language
配置栏,输入zh_CN
或zh_TW

若以上方式无法生效,可尝试搜索 Localization: Chinese (Simplified)
插件

最新版的 Jenkins 可能存在翻译不全或不生效情况
FAQ
安装完成却出现 Jenkins 实例已离线情况

原因是 jenkins 在下载插件之前会先检查网络连接,其会读取 default.json
文件中的网址,该文件位于 /var/jenkins_home/updates
下,connectionCheckUrl
默认是访问谷歌地址,如果没翻墙可能就会出错,所以将 connectionCheckUrl
的值改为www.baidu.com
即可,更改完重启服务。
当安装完成后访问地址出现 HTTP ERROR 503

出现该画面,很有可能是防火墙问题,比如:未开放当前访问的端口等
Jenkins初始化安装插件异常,无法进行下一步
- 方式一
可尝试换一下网络或者检查是否开启代理之类的


- 方式二
该方式是以 Jenkins 安装在宿主机中,至于 Docker 可参照该方式的处理流程
- 停止 Jenkins 服务
arduino
sudo systemctl stop jenkins
- 修改
config.xml
文件
arduino
sudo vim /var/lib/jenkins/config.xml
xml
Modify line 10 <useSecurity>true</useSecurity> to: <useSecurity>false</useSecurity>
Delete lines <authorizationStrategy .../> and <securityRealm ...> to</securityRealm>
结尾
本期的内容就到这里,路过的小伙伴记得支持一下哦!