在Docker中运行Jenkins

打算在远程服务器上运行Jenkins,忽然发现git没有安装,搞了半天没有成功(各种依赖问题,条件限制不能重启机器),所以尝试通过Docker运行Jenkins

完整命令

下面首先提供完整执行命令,再依次介绍其中Jenkins配置

1
2
3
4
5
6
7
$ docker run -d \
--restart=always \
-p 7070:8080 \
-p 50000:50000 \
-v jenkins_home:/var/jenkins_home \
--name jenkins \
jenkins/jenkins

镜像

Jenkins提供了官方镜像 - jenkins/jenkins

  • 使用稳定版:docker pull jenkins/jenkins:lts
  • 使用最新版:docker pull jenkins/jenkins

启动jenkins

docker命令如下:

1
$ docker run -p 7070:8080 -p 50000:50000 jenkins/jenkins

其可通过浏览器登录:http://192.xx.xx.xx:7070/

保存数据

Jenkins所有配置数据保存在路径/var/jenkins_home,可以使用一个卷保存配置数据,方便复用和移植操作

1
$ docker run -p 7070:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home jenkins/jenkins

docker会生成一个新卷jenkins_home,可通过docker volume ls查看

1
2
3
$ docker volume ls
DRIVER VOLUME NAME
local jenkins_home

后台运行

添加参数-d,设置容器在后台运行

1
$ docker run -d -p 7070:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home jenkins/jenkins

可通过命令docker logs CONTAINER_ID查询输出日志(比如初始密码)

1
2
3
4
5
$ docker logs b79
Running from: /usr/share/jenkins/jenkins.war
webroot: EnvVars.masterEnvVars.get("JENKINS_HOME")
...
...

设置执行器数量

jenkins默认允许2个执行器,可通过groovy脚本设置。新建脚本executors.groovy如下:

1
2
import jenkins.model.*
Jenkins.instance.setNumExecutors(5)

新建Dockerfile

1
2
FROM jenkins/jenkins:lts
COPY executors.groovy /usr/share/jenkins/ref/init.groovy.d/executors.groovy

重新编译生成新的Jenkins镜像

镜像升级

所有数据均保存在/var/jenkins_home,通过上节卷的方式保存数据,再次执行docker pull jenkins/jenkins即可升级到最新的Jenkins