一个计算机技术爱好者与学习者

0%

好好学Docker:使用Docker安装配置Jenkins

1. 前言

《CentOS7安装部署Jenkins》一文中学习了Jenkins的安装方法,如果使用Docker来安装Jenkins,同样可以简单很多。

前置条件是安装配置好了docker环境,安装方法参考《Docker入门》。已知docker宿主机IP为192.168.56.130。

2. 安装Jenkins

1、登录dockerhub查看需要的jenkins-Docker Official Images
需要注意,官方的jenkins最新版本是2.60.3,版本太低!如果安装该版本,安装后会出现各种插件使用不了的情况。因此,这里真正需要使用的jenkins命名空间下的jenkins

2、下载jenkins镜像(以2.210为例)
docker pull jenkins/jenkins:2.210

3、启动jenkins服务

1
2
3
4
docker run --name vk-jenkins -d \
-p 8080:8080 -p 50000:50000 \
-v /opt/jenkins_home:/var/jenkins_home \
jenkins/jenkins:2.210

以上命令:

  • 命名容器为vk-jenkins,后台运行
  • 映射宿主机8080、50000端口到容器8080、50000端口
  • 挂载宿主机目录/opt/jenkins_home到容器目录/var/jenkins_home

更多启动命令参数可以参考How to use this image

启动报错:

1
2
docker: Error response from daemon: driver failed programming external connectivity on endpoint vk-jenkins (d95f7502bb87d6795547061a2f13b5e2ba44648977399fcde1c05640f678554a):  (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 50000 -j DNAT --to-destination 172.17.0.2:50000 ! -i docker0: iptables: No chain/target/match by that name.
(exit status 1)).

解决办法:重启docker,然后重新执行启动命令。

1
2
3
4
5
6
7
systemctl restart docker
docker rm vk-jenkins

docker run --name vk-jenkins -d \
-p 8080:8080 -p 50000:50000 \
-v /opt/jenkins_home:/var/jenkins_home \
jenkins/jenkins:2.210

4、验证安装
docker ps
jenkins启动正常的话就可以看到vk-jenkins容器。
如果启动失败,可以使用docker logs vk-jenkins查看失败原因并进行解决。本例中确实报错了,提示目录权限问题:

1
2
touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?

这是因为/opt/jenkins_home目录的拥有者为root用户,而容器中jenkins user的uid为1000,因此需要修改目录权限。

1
2
chown -R 1000:1000 /opt/jenkins_home
docker start vk-jenkins

3. 配置使用Jenkins

1、加速插件安装(推荐)
参考Jenkins安装插件提速,修改/opt/jenkins_home/updates/default.json。

1
2
sed -i 's/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json
sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json

修改完成重启vk-jenkins,正常进入安装流程,直观感觉就是“安装推荐的插件”这一步速度能够提高一百倍。

2、查看初始密码
cat /opt/jenkins_home/secrets/initialAdminPassword

3、jenkins配置
浏览器访问:http://192.168.56.130:8080/
初始密码填入页面,开始进行jenkins配置。

4、后续
接下来的配置和使用参考《CentOS7安装部署Jenkins》即可。

至此,docker安装配置jenkins完成。因为第一次使用的是官方的jenkins2.60.3镜像,所以遇到了一些坑,下面一节中进行记录。

4. jenkins2.60.3问题解决

1、安装推荐的插件,会卡在Getting Started。
。这是因为安装插件前会尝试连接 www.google.com ,来判断网络是否连通。国内用户需要改成 www.baidu.comvim /opt/jenkins_home/updates/default.json,找到google,修改为baidu。

1
2
3
4
# 修改前
"connectionCheckUrl":"http://www.google.com/",
# 修改后
"connectionCheckUrl":"http://www.baidu.com/",

2、重启jenkins特别慢
docker restart vk-jenkins
发现重启特别特别慢,大概要10分钟左右才能重启成功。而且,重启后connectionCheckUrl中的baidu又变成了google!!!

3、修改updatecenter
怀疑在jenkins启动时会根据其他地方的配置更改default.json,但是没有找到。查找资料发现了一篇update jenkins Updatecenter from CLI,其中一行:

1
wget -O default.json http://updates.jenkins-ci.org/update-center.json

那么,如果修改updatecenter为中国的镜像站,是不是就会使用中国的update-center.json代替default.json?试一试,vim /opt/jenkins_home/hudson.model.UpdateCenter.xml,原文为:

1
2
3
4
5
6
7
<?xml version='1.0' encoding='UTF-8'?>
<sites>
<site>
<id>default</id>
<url>http://updates.jenkins-ci.org/update-center.json</url>
</site>
</sites>

中国镜像站去哪里找呢?可以在the status of Jenkins mirrors网站上选择。
hudson.model.UpdateCenter.xml修改为:

1
2
3
4
5
6
7
<?xml version='1.0' encoding='UTF-8'?>
<sites>
<site>
<id>default</id>
<url>https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json</url>
</site>
</sites>

删除/opt/jenkins_home/updates目录,再次重启vk-jenkins。
重启速度飞快,10秒左右,但是default.json中依然是google,因为镜像站里的update-center.json和jenkins源站里的update-center.json相同。既然jenkins启动时都会使用远端的update-center.json替代本地的default.json,那么解决该问题的方法就是给hudson.model.UpdateCenter.xml一个远端的修改后的update-center.json,或者不让jenkins获取到远端update-center.json。

4、填写假的updatecenter
修改hudson.model.UpdateCenter.xml为:

1
2
3
4
5
6
7
<?xml version='1.0' encoding='UTF-8'?>
<sites>
<site>
<id>default</id>
<url>http://localhost</url>
</site>
</sites>

因为获取不到update-center.json,然后就可以跳过安装插件的步骤。

5、更换新版jenkins镜像
jenkins安装成功,但是在jenkins的系统配置页面,可以看到很多插件报错,而且无法修复,系统建议进行jenkins升级。
此时,郝同学才意识到,官方jenkins镜像不是最新版!!!需要改用jenkins命名空间下的新版jenkins镜像,但是“安装推荐的插件”这一步依然很慢,几个小时甚至更久才能安装成功。加速方法可以参考本文 配置使用Jenkins 一节中的 加速插件安装。

  • 本文作者: 好好学习的郝
  • 原文链接: https://www.voidking.com/dev-docker-jenkins/
  • 版权声明: 本文采用 BY-NC-SA 许可协议,转载请注明出处!源站会即时更新知识点并修正错误,欢迎访问~
  • 微信公众号同步更新,欢迎关注~