第三节:容器的构建与部署自动化

@(Openshif开源云平台)

实验1目的:手工实现java应用的容器化,熟悉没有openshift时容器化的流程。

实现自己的MySQL+Jenkins的镜像
解释:MySQL、Jenkins都是独立的开源容器
环境:CentOS虚拟机一台(未安装任何应用或包)

加速器

提示:如果省去了这个步骤,下载过程你就等个十天半个月吧 : )
1)yum加速(阿里云)

#备份
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
#下载新的CentOS-Base.repo 到/etc/yum.repos.d/
#运行
yum makecache

2)docker加速参考

Java应用手工容器化实现步骤

#1)安装下载源代码的工具git
yum install -y git

#2)从github上下载java web的源代码
[root@master ~]# cd /opt
[root@master ~]# git clone https://github.com/nichochen/mybank-demo-maven.git

#3)安装应用build所需要的Java开发包JDK和Maven
yum install -y maven

#4)通过maven编译刚才下载的Java代码
cd  mybank-demo-maven/
mvn package
#这个步骤后会在该文件夹下生成一个target文件,进入后有一个Root.war

#5)下载docker并启动
yum install -y docker
systemctl start docker

#6)下载基础镜像,不加冒号和后面的版本号码即下载最新版本
docker pull tomcat:7.0.79-jre7-alpine

#7)编写Dockerfile(不能设置成其他的名字)
[root@master mybank-demo-maven]# touch Dockerfile
[root@master mybank-demo-maven]# vim Dockerfile
FROM tomcat:7.0.79-jre7-alpine
ADD ./target/ROOT.war /usr/local/tomcat/webapps/mybank.war
#将本地的ROOT文件拷贝到容器中,命名为mybank.war

#8)执行docker build构建镜像(将代码和基础镜像融合在一起build) ,将新生成的镜像命名改成mybank-tomca(注意后面的小点)
docker build -t mybank-tomcat .
#显示如下
Step 1 : FROM tomcat:7.0.79-jre7-alpine
 ---> b3034ce7bae7
Step 2 : ADD ./target/ROOT.war /usr/local/tomcat/webapps/mybank.war
 ---> 6b64b2fbd196
Removing intermediate container 06271aa2cfd5
Successfully built 6b64b2fbd196

#9)查看新生成的镜像
docker images|grep mybank-tomcat
mybank-tomcat       latest               6b64b2fbd196        4 minutes ago       154 MB

#10)测试镜像。通过docker run命令测试新创建的镜像,通过参数-p 8080:8080将容器的8080端口映射到主机的8080端口,方便测试
[root@master mybank-demo-maven]# docker run -it --rm -p 8080:8080 mybank-tomcat
>>INFO: Server startup in 3650 ms

#11)在虚拟机的浏览器中输入网址http://master.example.com:8080/mybank/,可以看到小猪的页面,点击按钮会出现报错,是因为没有安装数据库,之后ctl+c终断

#12)push新生成的镜像到自己的镜像仓库中,在阿里云中可以自己建一个镜像仓库,首先通过tag只想目标仓库的镜像名称
[root@master ~]# docker tag mybank-tomcat:latest registry.cn-hangzhou.aliyuncs.com/ivyfan/dockertest
[root@master ~]# docker push registry.cn-hangzhou.aliyuncs.com/ivyfan/dockertest/mybank-tomcat:latest

Openshift自动构建与部署

实验目的:体会Source to Image(S2I)的流程:
下载源代码或者代码更新 ->上传到代码配置库 -> 定下载到基础镜像环境中编译构建 -> 输出的应用部署到容器中(形成一个包含应用和基础运行环境的崭新镜像)-> 镜像部署到集群

1)下载oc(openshift的command-line)
官网网页选择你的系统压缩包下载

2)模板构建:通过yaml写的一个文件进行构建,yaml中定义了基础镜像的来源,参考《开源容器云openshift》,但是尝试后发现基础镜像widfly已经不再openshift hub中,因此采用 3)构建

#下载模板
#1)切换到自己的project中
oc project ci3

#2)在github中下载widfly模板
#github中提供了很多模板:#http:github.com/openshift/origin/tree/v1.3.0/examples

oc create -f https://raw.githubusercontent.com/nichochen/openshift-book-source/master/template/wildfly-basic-s2i.template.json  -n ci3
>> template "wildfly-basic-s2i" created

3)在Brose catalog中选择Java,然后是Red Hat JBoss Web Server(Tomcat),再加上app的源代码git Repository URL:https://github.com/nichochen/mybank-demo-maven
等待部署成功 :D

4)将route添加到hosts中,就可以看见小猪页面了~
4)查看静态配置信息——Build Config

#1)查看build config的配置信息,openshift可以根据这个静态的配置信息触发多次,形成多个构建实例
oc get bc mybank-fxw -o yaml

#2)查看构建记录
oc get build
  1. 查看镜像部署的配置——Deployment Config,即前一BC阶段为了生成一个镜像,并将镜像push到内部镜像仓库中(log中可以查到最后的push),DC阶段是为了将镜像部署到多个pod上
#1)查看DC
oc get dc mybank-fxw -o yaml

如何触发更新

原因:过程简化(openshift触发一次build,再触发一次部署、形成实例)

触发方式:手动触发和web hook触发

#1)为Jenkins授权
oc policy add-role-to-user edit system:service account:ci1:default -n ci1
>>role "edit" added: ["system:service" "account:ci1:default"]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容

  • 转载本文需注明出处:微信公众号EAWorld,违者必究。 本文目录: 一、企业应用的部署发展 二、普元容器云与De...
    72a1f772fe47阅读 908评论 0 3
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,585评论 18 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,724评论 6 342
  • Docker — 云时代的程序分发方式 要说最近一年云计算业界有什么大事件?Google Compute Engi...
    ahohoho阅读 15,505评论 15 147
  • 不经意的翻动日历,又是一年的七月一十,心中又一阵悸动,六年了,父亲离开我们已经整整六年了!六年来,我从一个...
    幽幽清莲阅读 220评论 0 0