使用Jenkins来构建Docker容器(Ubuntu 14.04)

当开发更新了代码,提交到Gitlab上,然后由测试人员触发Jenkins,于是一个应用的新版本就被构建了。听起来貌似很简单,duang~duang~duang,我用了是这样,你们用了也是这样,看起来这个过程很自动化,其实这里面加了很多特技,根本就没有这样的头发,不对,根本就没有这样简单的方式,其环境搭建的过程十分繁琐,jenkins的上下文关系配置更是相当困难。今天我来介绍一种简单的新方法-使用Jenkins来构建一个apache容器。

以下操作的目标:jenkins放置在宿主机内(Ubuntu14.04),apache容器放置在容器里,以后apache镜像一做修改,触发构建一个jenkins的job,宿主机会停掉原来的容器,生成一个新的容器。

下面进入正式环节。

1.安装Jenkins

#wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | #sudo apt-key add -
#sudo sh -c 'echo deb http://pkg.jenkins-ci.org/debian binary/ > /etc/apt/sources.list.d/jenkins.list'
#sudo apt-get update
#sudo apt-get install jenkins

2.登陆http://IP:8080,进入jenkins,在http://IP:8080/pluginManager/available安装一些必要的插件SCM Sync Configuration Plugin ,GitHub plugin ,GIT plugin ,GIT client plugin ,安装结束后重启jenkins.

3.重新登陆http://IP:8080,进入jenkins,新建一个名为apache的Item.

  • 配置如下面截图

  shell脚本如下,该脚本会从github上(如果有本地gitlab操作同理)

#!/bin/sh
id
set +e
echo '>>> Get old container id' CID=$(docker ps | grep "apache" | awk '{print $1}') echo $CID /usr/local/bin/docker build -t apache /var/lib/jenkins/jobs/apache/workspace | tee /var/lib/jenkins/jobs/apache/workspace/Docker_build_result.log
RESULT=$(cat /var/lib/jenkins/jobs/apache/workspace/Docker_build_result.log | tail -n 1) #if [["$RESULT" != *Successfully*]];then
#  exit -1
#fi echo '>>> Stopping old container' if [ "$CID" != "" ];then
  /usr/local/bin/docker stop $CID
fi echo '>>> Restarting docker'
service docker.io restart
sleep 5
  
echo '>>> Starting new container'
/usr/local/bin/docker run -p 3000:80 -d apache

4.配置结束后,保存

5.配置jenkins用户

  此时还不能立即构建,因为jenkins触发脚本并不是root用户,因此需要将jenkins免用户,并将用户加入到docker组,否则获取不到容器ID.

root@iZ2893wjzgyZ:~# vim /etc/sudoers

# User privilege specification
root ALL=(ALL:ALL) ALL
jenkins ALL=(ALL:ALL) ALL jenkins@iZ2893wjzgyZ:~$ usermod -G docker jenkins

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

7.现在查看一下镜像和容器,登陆apache网站验证

容器生成的apache页面打开如下

当前标签: Docker

 
从零开始使用Jenkins来构建Docker容器(Ubuntu 14.04) alexkn 2015-03-04 19:30 阅读:155 评论:0  
 
用Docker封装一个web应用(Django) alexkn 2015-01-28 17:23 阅读:110 评论:0  
 
centos安装docker alexkn 2015-01-20 22:07 阅读:23 评论:0  
 
docker中如何制作自己的基础镜像 alexkn 2014-07-31 14:17 阅读:150 评论:0  
 
Docker 总结(转载) alexkn 2014-07-30 14:48 阅读:136 评论:0  
 
Docker简明教程(以安装wget程序为例) alexkn 2014-07-29 17:01 阅读:450 评论:0  
 
标签: Dockerjenkins

使用Jenkins来构建Docker容器的更多相关文章

  1. 从零开始使用Jenkins来构建Docker容器(Ubuntu 14.04)

    当开发更新了代码,提交到Gitlab上,然后由测试人员触发Jenkins,于是一个应用的新版本就被构建了.听起来貌似很简单,duang~duang~duang,我用了是这样,你们用了也是这样,看起来这 ...

  2. 使用jenkins自动构建docker容器范例

    1.登录Jenkins,新建一个自由风格的软件项目. 2.源码管理选择git,并添加Repository URL.Credentials 3.构建选择 Execute Shell,命令如下: dock ...

  3. Jenkins + Github持续集成构建Docker容器,维基百科&人工自能(AI)模块

    本文分两部分,第一部分是手动计划任务的方式构建Github上的Docker程序,第二部分是用Github webhook Trigger一个自动构建任务. Jenkins采用2.5版本Docker采用 ...

  4. docker系列之二:构建docker容器

    1.创建在FlaskApp/app中创建Flask项目: 2.生成web项目所需的运行环境:pip3 freeze > ../requirements.txt 3.编辑Dockerfile: # ...

  5. 基于Kubernetes构建企业容器云

    前言 团队成员有DBA.运维.Python开发,由于需要跨部门向公司私有云团队申请虚拟机, 此时我在思考能否在现有已申请的虚拟机之上,再进行更加细粒度的资源隔离和划分,让本团队的成员使用, 也就是在私 ...

  6. Docker容器镜像瘦身的三个小窍门(转)

    [转自:http://dockone.io/article/8174] 在构建Docker容器时,我们应尽可能减小镜像的大小.使用共享层的镜像尺寸越小,其传输和部署速度越快. 不过在每个RUN语句都会 ...

  7. ubuntu 中安装jenkins,基于docker运行jenkins

     本文是在ubuntu环境下安装jenkins,jenkins运行在docker容器中,至于docker如何安装,本文不再描述,大家可以上网查询下,如何安装docker,下面先放上一个使用jenkin ...

  8. 一文了解Docker容器技术的操作

    一文了解Docker容器技术的操作 前言一.Docker是什么二.Docker的安装及测试Docker的安装Docker的Hello world测试三.Docker的常见操作镜像的基本操作容器的基本操 ...

  9. 3.Docker容器学习之新手基础使用

    原文地址: http://blog.weiyigeek.top/2019/5/2-docker%E5%AD%A6%E4%B9%A0%E4%B9%8B%E5%9F%BA%E7%A1%80%E4%BD%B ...

随机推荐

  1. Linux下find命令具体解释

    1. find命令 linux的find命令用来查找文件,功能非常强大, 能够通过时间, 用户组, 文件名称, 文件类型, 权限,大小等来查找对应文件. 2. find的使用方法 通过find --h ...

  2. weighted Kernel k-means 加权核k均值算法理解及其实现(一)

    那就从k-means开始吧 对于机器学习的新手小白来说,k-means算法应该都会接触到吧.传统的k-means算法是一个硬聚类(因为要指定k这个参数啦)算法.这里利用百度的解释 它是数据点到原型的某 ...

  3. 阿里巴巴2014研发project师实习生面试经历

    java研发project师的初面是在上周三进行的,终于结果到了晚上才出,而没有通过的则是一结束网上就更新了状态.之后阿里通知这周三,也就是今天进行二面. 凑巧的是今早被舍友吵醒,中午那个困啊,但没时 ...

  4. CodeForces 441 A. Valera and Antique Items

    纯粹练JAVA.... A. Valera and Antique Items time limit per test 1 second memory limit per test 256 megab ...

  5. java处理Excel文件---excel文件的创建,删除,写入,读取

    这篇文章的代码是我封装的excel处理类,包含推断excel是否存在,表格索引是否存在,创建excel文件,删除excel文件,往excel中写入信息,从excel中读取数据. 尤其在写入与读取两个方 ...

  6. Cocos2d-x 脚本语言Lua使用

    Cocos2d-x 脚本语言Lua使用 前面几篇博客已经把Lua的相关基础知识介绍了.本篇博客就来介绍一下,怎样在Cocos2d-x项目中使用Lua这门脚本语言进行开发.因为笔者使用的时Mac系统.所 ...

  7. 下载文档--Struts2中国的文件下载被显示为空间的问题

    下载文档--Struts2中国人似乎是空文件下载格问题 前言:近期公司项目中用到文件下载,依据底层,决定使用struts2的文件下载模式. 乱码大多数都攻克了,竟然出现中文文件下载时,中文文字显示为空 ...

  8. iOS学习 plist读取和写入文件

    干iOS开发时间.后经常用来plist文件,  那plist什么文件是它? 它的全称是:Property List.属性列表文件.它是一种用来存储串行化后的对象的文件.属性列表文件的扩展名为.plis ...

  9. 微信JS-SDK“分享信息设置”API及数字签名生成方法(NodeJS版本)

    原文:微信JS-SDK"分享信息设置"API及数字签名生成方法(NodeJS版本) 先上测试地址以示成功: 用微信打开下面地址测试 http://game.4gshu.com/de ...

  10. 包装类、Object类——Java笔记(八)

    包装类:     基本数据类型的包装类     基本数据类型 包装类 byte Byte short Short int Integer long Long char Character float ...