Jenkins 官网
Docker 安装 Jenkins (超详细)
docker安装jenkins

Docker 安装 Jenkins-2.263.1

1.下载 jenkins docker 镜像

Jenkins Dockerhub

我这里使用基于 centos7 为基础的 Jenkins镜像,因为我的宿主机也是 Centos7,并且在构建过程中需要使用诸多 centos7 下原生命令。

1
$ docker pull jenkins/jenkins:2.263.1-lts-centos7

2.修改 docker systemd 启动脚本

修改 docker systemd 启动脚本,对 /var/run/docker.sock 赋予 0777 权限,供挂载的容器使用宿主机的 docker

1
2
3
4
5
6
7
8
$ vim /etc/systemd/system/docker.service
...
[Service]
ExecStartPost=/usr/bin/chmod 0777 /var/run/docker.sock
...

$ systemctl daemon-reload
$ systemctl restart docker

3.宿主机创建 jenkins_home 数据目录

创建 jenkins 用户,uid, gid 必须是 1000

因为docker image里面官方的 jenkins用户 uid, gid 就是 1000

1
2
3
4
$ groupadd -g 1000 jenkins
$ useradd -u 1000 -r -g jenkins -s /sbin/nologin -MN jenkins
$ mkdir -p /data/jenkins_home/
$ chown -R jenkins.jenkins /data/jenkins_home/

4.创建容器

docker run

1
$ docker run -d --name jenkins -p 8080:8080 -p 50000:50000 -v /data/jenkins_home:/var/jenkins_home jenkins/jenkins:2.263.1-lts-centos7

docker-compose

因为我的 Jenkins 业务构建容器的过程需要 docker build, python3, nodejs 环境,所以需要把宿主机的这些环境挂载到 Jenkins 容器中。

业务构建环境 docker run 的配置较多,所以使用 docker-compose 来编排。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
$ vim /etc/docker/jenkins/docker-compose.yml 
version: '3'
services:
jenkins:
image: jenkins/jenkins:2.263.1-lts-centos7
container_name: jenkins
restart: always
working_dir: /var/jenkins_home
ports:
- 8080:8080
- 50000:50000
environment:
- TZ=Asia/Shanghai
- PATH=/usr/local/python3/bin:/usr/local/node/bin:$PATH
- LANG=en_US.UTF-8
#privileged: true
volumes:
- /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime # timezone
- /etc/timezone:/etc/timezone # timezone
- /data/jenkins_data/jenkins_backup_tz:/data/backup/jenkins # jenkins backup
- /data/jenkins_home:/var/jenkins_home # jenkins_home
- /data/jenkins_home:/data/jenkins_home # jenkins_home
- /data/jenkins_data/jenkins_diy_tool:/var/jenkins_home/jenkins_diy_tool # jenkins_diy_tool
- /data/jenkins_data/jenkins_diy_tool:/data/jenkins_home/jenkins_diy_tool # jenkins_diy_tool
- /data/jenkins_data/.npm:/var/jenkins_home/.npm # .npm 本地缓存
- /data/jenkins_data/.npm:/data/jenkins_home/.npm # .npm 本地缓存
- /data/jenkins_data/.npmrc:/var/jenkins_home/.npmrc # npm 国内源
- /data/jenkins_data/.npmrc:/data/jenkins_home/.npmrc # npm 国内源
- /data/jenkins_data/.pip:/var/jenkins_home/.pip # pypi 国内源
- /data/jenkins_data/.pip:/data/jenkins_home/.pip # pypi 国内源
- /usr/bin/docker:/usr/bin/docker # docker
- /var/run/docker.sock:/var/run/docker.sock # docker
- /usr/local/node:/usr/local/node # node
- /usr/local/python3:/usr/local/python3 # python3
- /usr/bin/kubectl:/usr/bin/kubectl # kubectl
- /root/tdserver/tcgame_upload_tools:/data/tcgame_upload_tools

启动 Jenkins 容器。

1
2
$ cd /etc/docker/jenkins
$ docker-compose up -d

5.安装向导安装 Jenkins

首次安装 http://IP:8080

如果是首次安装,进入容器获取初始管理员密码,根据安装向导提示一步步安装。

注意:安装过程不要安装推荐的插件,插件后期自行安装。

1
2
3
4
# 首次安装进入容器获取初始化密码
$ docker exec -it jenkins /bin/bash
bash-4.2$ cat /var/jenkins_home/secrets/initialAdminPassword
85770376692448b7b6a8e301fb437848

从备份还原

从备份还原,需要先初始化进入Jenkins Dashboard ,安装插件 ThinBackup

然后从 old Jenkins 的 ThinBackup 备份下备份一份全量备份包,导入到 new Jenkins 的备份目录进行还原。

注意:

  1. 还原备份使用相同的 Jenkins版本
  2. 凭据用户的密码会失效,需要更新凭据密码。
  3. 还原后Manager页面有诸多报错,多半是由于插件引起,可以升级全部插件