Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2899162
  • 博文数量: 348
  • 博客积分: 2907
  • 博客等级: 中校
  • 技术积分: 2272
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-12 09:16
个人简介

专注 K8S研究

文章分类

全部博文(348)

文章存档

2019年(22)

2018年(57)

2016年(2)

2015年(27)

2014年(33)

2013年(190)

2011年(3)

2010年(14)

分类: 系统运维

2018-03-19 12:01:41

一、介绍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镜像之前,最好先看一下。更有助于理解。

二、安装Jenkins

1. 添加Jenkins的源(repository)

2. 安装JDK


3. 安装Jenkins


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

Jenkins默认监控端口8080。


启动如果出现错误:”Starting Jenkins -bash: /usr/bin/: 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://:8080/登录Jenkins,并进行相关配置(插件安装、权限配置、View/Job创建等等)。

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

Docker:使用Jenkins构建Docker镜像

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

首先,需要安装一些必要的插件 , , ,,在系统管理->插件管理里面安装,安装结束后重启jenkins即可。

然后创建一个项目为nginx。

Docker:使用Jenkins构建Docker镜像

然后配置一下源码管理,Git地址:

就下面几个文件,主要是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:。

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



阅读(1511) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~