使用Jenkins来构建Docker容器
使用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容器的更多相关文章
- 从零开始使用Jenkins来构建Docker容器(Ubuntu 14.04)
当开发更新了代码,提交到Gitlab上,然后由测试人员触发Jenkins,于是一个应用的新版本就被构建了.听起来貌似很简单,duang~duang~duang,我用了是这样,你们用了也是这样,看起来这 ...
- 使用jenkins自动构建docker容器范例
1.登录Jenkins,新建一个自由风格的软件项目. 2.源码管理选择git,并添加Repository URL.Credentials 3.构建选择 Execute Shell,命令如下: dock ...
- Jenkins + Github持续集成构建Docker容器,维基百科&人工自能(AI)模块
本文分两部分,第一部分是手动计划任务的方式构建Github上的Docker程序,第二部分是用Github webhook Trigger一个自动构建任务. Jenkins采用2.5版本Docker采用 ...
- docker系列之二:构建docker容器
1.创建在FlaskApp/app中创建Flask项目: 2.生成web项目所需的运行环境:pip3 freeze > ../requirements.txt 3.编辑Dockerfile: # ...
- 基于Kubernetes构建企业容器云
前言 团队成员有DBA.运维.Python开发,由于需要跨部门向公司私有云团队申请虚拟机, 此时我在思考能否在现有已申请的虚拟机之上,再进行更加细粒度的资源隔离和划分,让本团队的成员使用, 也就是在私 ...
- Docker容器镜像瘦身的三个小窍门(转)
[转自:http://dockone.io/article/8174] 在构建Docker容器时,我们应尽可能减小镜像的大小.使用共享层的镜像尺寸越小,其传输和部署速度越快. 不过在每个RUN语句都会 ...
- ubuntu 中安装jenkins,基于docker运行jenkins
本文是在ubuntu环境下安装jenkins,jenkins运行在docker容器中,至于docker如何安装,本文不再描述,大家可以上网查询下,如何安装docker,下面先放上一个使用jenkin ...
- 一文了解Docker容器技术的操作
一文了解Docker容器技术的操作 前言一.Docker是什么二.Docker的安装及测试Docker的安装Docker的Hello world测试三.Docker的常见操作镜像的基本操作容器的基本操 ...
- 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 ...
随机推荐
- Visual Studio中开发
如何在Visual Studio中开发自己的代码生成器插件 Visual Studio是美国微软公司开发的一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如UML工具.代 ...
- angular input使用输入框filter格式化日期
最近使用angular日期选取器.只需要把所选的输出迄今input输入框,根据默认的假设,显示是在时间的形式的时间戳.不符合规定.需要格成一个特定的公式格公式.但input上ng-model不能直接对 ...
- SplashScreenDemo
对Java应用最常见的抱怨就是启动时间太长.这是因为Java虚拟机花费一段时间去加载所有必需的类,特别是对Swing应用,它们需要从Swing和AWT类库代码中去抽取大量的内容. 用户并不喜欢应用程序 ...
- C# 字符串知识整理
新知识点,只是对于本人来说而已. 系统处理文本的方式 [新知识点].NET Framework .NET Framework的定义:其包含了一个公共语言运行时(Common Language Runt ...
- .NET反编译之Reflector
.NET反编译之Reflector 这几日由于公司需要, 看了些.NET反编译技巧,特地和大家分享下 .NET反编译工具很多,Reflector是其中一个很优秀的工具,所以就用它来进行反编译工作了.今 ...
- android(9)_数据存储和访问3_scard基本介绍
使用Activity的openFileOutput()保存文件的方法,文件存储在手机空间,通常情况下,手机的存储空间不是很大,存储小文件确定.假设你要存储大文件,如视频,是不可行. 对于这样大的文件, ...
- Android Drawable绘图学习笔记(转)
如何获取 res 中的资源 数据包package:android.content.res 主要类:Resources Android SDK中的简介:Class for accessing an ap ...
- hdu 3695 Computer Virus on Planet Pandora(AC自己主动机)
题目连接:hdu 3695 Computer Virus on Planet Pandora 题目大意:给定一些病毒串,要求推断说给定串中包括几个病毒串,包括反转. 解题思路:将给定的字符串展开,然后 ...
- js地址下拉列表中全职工作
/******************************************************************* *输出全国各省辖市下拉列表项writeCitys() *输出企 ...
- 快速解读GC日志(转)
本文是 Plumbr 发行的 Java垃圾收集手册 的部分内容.文中将介绍GC日志的输出格式, 以及如何解读GC日志, 从中提取有用的信息.我们通过 -XX:+UseSerialGC 选项,指定JVM ...