Docker:使用Jenkins构建Docker镜像

 

 Docker  彭东稳  1年前 (2016-12-27)  10709次浏览  已收录  0个评论

一、介绍Jenkins

Jenkins是一个开源项目,提供了一种易于使用的持续集成系统,使开发者从繁杂的集成中解脱出来,专注于更为重要的业务逻辑实现上。同时Jenkins能实施监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象地展示项目构建的趋势和稳定性。并且Jenkins提供了大量的插件,能够完成各种任务。

今天我需要使用Jenkins构建一个Docker镜像,然后自动push到docker registry中。到了docker registry中,后面测试人员就可以把镜像发布到测试环境,测试如果没有问题就可以发布到线上环境,大概流程如下图:

Docker:使用Jenkins构建Docker镜像

上图就是我生产使用方式,其中Jenkins master使用docker的好处就是方便后面迁移,而Jenkins slave不适用docker的原因就是在docker中再次安装docker进行镜像构建太麻烦了,索性直接使用主机。而registry部分有两个节点,他们之间的数据使用DRBD同步,外借助于haproxy+keepalived实现registry的高可用。

下面先介绍Jenkins构建docker镜像,在使用Jenkins构建Docker镜像之前,最好先看一下Docker:使用Dockerfile构建Nginx镜像。更有助于理解。

二、安装Jenkins

1. 添加Jenkins的源(repository)

2. 安装JDK

 

3. 安装Jenkins

 

到此,Jenkins就安装完成了。然后就可以启动Jenkins。

Jenkins默认监控端口8080。

 

启动如果出现错误:”Starting Jenkins -bash: /usr/bin/Java: No such file or directory”,表示Jenkins找不到java。这时就需要编译配置文件/etc/init.d/jenkins,把java路径加上即可。

三、Jenkins文件说明

/usr/lib/jenkins/:jenkins安装目录,WAR包会放在这里。

 /etc/sysconfig/jenkins:jenkins配置文件,其”端口”,”JENKINS_HOME”等都可以在这里配置。

/var/lib/jenkins/:默认的JENKINS_HOME。

/var/lib/jenkins/jobs/${project_name}/workspace/:Jenkins项目的工作空间,存储从Git或SVN下载的内容,${project_name}就是其项目名称。

/var/log/jenkins/jenkins.log:Jenkins日志文件。

四、配置Jenkins构建镜像

如果没有特别配置端口,使用http://<ip address>:8080/登录Jenkins,并进行相关配置(插件安装、权限配置、View/Job创建等等)。

第一次登陆Jenkins时需要解锁,把如下秘钥填写进去即可。

Docker:使用Jenkins构建Docker镜像

然后设置一下用户密码,就正式进入到了Jenkins配置界面。

首先,需要安装一些必要的插件SCM Sync Configuration Plugin ,GitHub plugin ,GIT plugin ,GIT client plugin,在系统管理->插件管理里面安装,安装结束后重启jenkins即可。

然后创建一个项目为nginx。

Docker:使用Jenkins构建Docker镜像

然后配置一下源码管理,Git地址:https://github.com/dongwenpeng/nginx

就下面几个文件,主要是dockerfile,然后提供了一些nginx配置文件以及web文件。

 

如下配置,也可以使用你本地的Git仓库:

Docker:使用Jenkins构建Docker镜像

主要就是构建脚本了。

Docker:使用Jenkins构建Docker镜像

脚本内容

 

 

配置结束后,保存。

五、配置jenkins用户

此时还不能立即构建,因为jenkins触发脚本并不是root用户,因此需要将jenkins免密码,并将用户加入到docker组。

 

第一行表示仅jenkins用户不需要控制终端,不然在Jenkins脚本中无法使用sudo。

 

 

六、开始构建镜像

在jenkins的build记录中可以看到输出,由于jenkins会自动把github上的文件给下载下来放在workspace目录中。因此,触发脚本后,直接开始构建nginx镜像。

构建完成后,可以去Jenkins主机看看镜像是否完成。

可以看到已经构建完成了,下面直接启动此镜像。

 

 

七、推送到远程仓库

现在使用Jenkins构建Docker镜像已经没有问题了,下面就可以把Jenkins构建完的镜像直接推送到远程的registry中。关于构建私有docker registry可以看Docker:搭建私有仓库(Registry 2.4)

当远程仓库搞定后,其实Jenkins这边做的并不是太多,只需要把构建脚本修改一下,在构建完成后直接推送到远程仓库就OK了。

posted @ 2018-01-27 00:00  技术颜良  阅读(6929)  评论(0编辑  收藏  举报