OpenShift 4 之通过ImageTrigger自动构建变化级联镜像
《OpenShift 4.x HOL教程汇总》
我们知道容器镜像是分层的,应用镜像一般会构建在镜像之上。常见情况是底层是操作系统镜像,再往上是中间件镜像,最上层是应用镜像。当应用代码变化后可以通过CI/CD过程自动更新应用镜像,当底层支撑镜像更新的时候我们可以使用OpenShift的BuildChain功能自动触发上层的Build过程。例如当下图中ops layer镜像变化后,OpenShift可触发上层自动构建app layer的镜像,从而使得整个应用镜像保持最新状态。
- 用一般用户新建一个项目,然后基于一个Dockerfile新建一个Build
$ oc new-project my-build-trigger
$ oc new-build --name=ops https://github.com/liuxiaoyu-git/welcome --context-dir=sh
- 在提示Success后执行以下命令查看BuildConfig(bc)和ImageStream(is),此时应该有1个bc和2个is。之所以有2个is,可以在https://github.com/liuxiaoyu-git/welcome/blob/master/sh/Dockerfile看到ops还依赖另一个名为busybox的Image。
$ oc get bc
NAME TYPE FROM LATEST
ops Docker Git 8
$ oc get is
NAME DOCKER REPO TAGS UPDATED
busybox default-route-openshift-image-registry.apps-crc.testing/my-build-trigger/busybox latest About an hour ago
ops default-route-openshift-image-registry.apps-crc.testing/my-build-trigger/ops 18 minutes ago
- 执行以下命令,基于另一个Dockerfile新建领一个Build
$ oc new-build --name=foo https://github.com/liuxiaoyu-git/welcome --context-dir=foo
- 有提示Success后执行以下命令,查看busybox的buildchain信息。以下结果说明镜像标签为busybox:latest镜像变化后会触发bc/ops的BuildConfig,而ops:latest镜像变化后会触发bc/foo
$ oc adm build-chain busybox
istag/busybox:latestbc/opsistag/ops:latestbc/fooistag/foo:latest
- 可使用以下命令分别查看ops镜像和foo镜像的buildchain信息
$ oc adm build-chain ops
$ oc adm build-chain foo
- 查看和foo镜像相关的Trigger(其中第二行是基于Image变化触发的Trigger)。
$ oc set triggers bc/foo
NAME TYPE VALUE AUTO
buildconfigs/foo config true
buildconfigs/foo image ops:latest false
buildconfigs/foo webhook <secret>
buildconfigs/foo github <secret>
- 查看ops和foo的Build记录
$ oc get build
NAME TYPE FROM STATUS STARTED DURATION
ops-1 Docker Git@ac8013d Complete 52 seconds ago 13s
foo-1 Docker Git@ac8013d Complete 11 seconds ago 11s
- 查看ops和foo的ImageStream信息,其中会显示imagesteam对应的镜像的变化情况,例如ops的ImageStream会显示以下一条记录,说明标记为latest标签的ImageStreamTag指向的是id为2a6d33e0df5612deed84cc674e2ef3f36cc41be0c2c8fd01d8d8e0e5b385ea83的物理镜像。
$ oc describe is/ops
$ oc describe is/foo
latestno spec tag*. default-route-openshift-image-registry.apps-crc.testing/my-build-trigger/ops@sha256:2a6d33e0df5612deed84cc674e2ef3f36cc41be0c2c8fd01d8d8e0e5b385ea834 hours ago
- 对ops启动一个新的Build
$ oc start-build bc/ops
- 查看Build记录。在这一过程中会发现当ops完成Build后foo会自动启动Build
$ oc get build -w
NAME TYPE FROM STATUS STARTED DURATION
ops-1 Docker Git@ac8013d Complete 21 minutes ago 17s
foo-1 Docker Git@ac8013d Complete 17 minutes ago 15s
ops-2 Docker Git@ac8013d Complete 43 seconds ago 12s
foo-2 Docker Git@ac8013d Complete 32 seconds ago 15s
- 再次用(8)的命令查看ImageStream信息,会发现标签为lastest的ImageStreamTag指向了一个新的物理镜像。
latestno spec tag*. default-route-openshift-image-registry.apps-crc.testing/my-build-trigger/ops@sha256:b09d35253d8dcdb3a24c4632e65d269c019c3e37bbc388d4436acb9d037e15a84 hours agodefault-route-openshift-image-registry.apps-crc.testing/my-build-trigger/ops@sha256:2a6d33e0df5612deed84cc674e2ef3f36cc41be0c2c8fd01d8d8e0e5b385ea834 hours ago
- 执行以下命令,删除foo和ops之间的Trigger
$ oc set triggers bc/foo --from-image=ops:latest --remove
- 再次查看BuildChain,发现ops:latest变化后不再触发foo的Build过程
$ oc adm build-chain busybox
istag/busybox:latestbc/opsistag/ops:lates
- 再次执行一次(9)的命令,并用(10)的命令查看状态,会发现不会自动触发foo的Build了。
- 执行以下命令,重新恢复BuildChain
$ oc set triggers bc/foo --from-image=ops:latest --remove=false
再次执行(4)的命令,确认BuildChain又恢复了。
再次执行(9)的命令新建一个ops的Build,然后通过(10)命令确认在Build完ops,会发现又会自动触发foo的Build操作,同时ImageStream会指向新生成的物理镜像。
OpenShift 4 之通过ImageTrigger自动构建变化级联镜像相关推荐
- (开包即用,不用看代码!)借助Docker自动构建Java(Oracle)镜像
开包即用,不用看代码! 如果着急使用可以直接使用我构建的镜像,请从配置镜像源开始看 Docker中的Java Java可能是程序员最常用的运行时环境了, 即使你不开发Java程序,大量的开发工具也需要 ...
- OpenShift 4 Hands-on Lab (5) - 用Build、Builder Trigger、Webhook构建和更新镜像
<OpenShift 4.x HOL教程汇总> 说明:本文已经在OpenShift 4.8环境中验证 文章目录 构建(Build)镜像的相关概念 BuildConfig Build Bui ...
- 中国人工智能学会通讯——自然语言处理的十个发展趋势 趋势 4: 语言知识——从人工构建到自动构建...
趋势 4: 语言知识--从人工构建到自动构建 AlphaGo告诉我们,没有围棋高手介入它的开发过程,到AlphaGo最后的版本,它已经不怎么需要看棋谱了.所以AlphaGo在学习和使用过程中都有可能会 ...
- [Linux] 编写Dockerfile文件自动构建镜像
Dockerfile是一个文本文件,按顺序包含构建给定镜像所需的所有命令 Docker通过读取Dockerfile中的指令自动构建图像 . Dockerfile遵循特定的格式和指令集,您可以在Dock ...
- 基于领域知识的Docker镜像自动构建方法
点击上方蓝字关注我们 基于领域知识的Docker镜像自动构建方法 陈伟1,2, 叶宏杰1,2, 周家宏1,2, 魏峻1,2 1 中国科学院大学,北京 100190 2 中国科学院软件研究所,北京 10 ...
- [Pytorch系列-58]:循环神经网络 - 词向量的自动构建与模型训练代码示例
作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客 本文网址:https://blog.csdn.net/HiWangWenBing/article/detai ...
- dockerfile 编写php,[Linux]编写Dockerfile文件自动构建镜像
Dockerfile是一个文本文件,按顺序包含构建给定镜像所需的所有命令 Docker通过读取Dockerfile中的指令自动构建图像 . Dockerfile遵循特定的格式和指令集,您可以在Dock ...
- Concourse实战 - 监控GitHub release并自动构建镜像
背景及需求 偶然在网上看到了一个可以多端直播推流的工具,叫Ant Media Server,但是它的安装程序并不支持我正在用的Ubuntu 22.04 LTS,同时它也没有提供制作好的Docker镜像 ...
- iOS应用模块化的思考及落地方案(二)模块化自动构建工具的使用
1.0 iOS模块化中的问题 前文已经介绍了模块化的流程及一些常见的问题,我们在这里再次总结一下. 在工作中,当我们开始一个新项目的时候,最先考虑的就是模块化工作. 模块化工作的想法是很美好的,可是执 ...
最新文章
- Oracle RMAN备份深入解析--联机备份
- 015PHP文件处理——文件处理flock 文件锁定 pathinfo realpath tmpfile tempname
- dedecms系统环境需求及注意事项是什么
- linux系统安装服务器过程,Linux系统服务器安装宝塔面板图文过程详解
- poj1201Intervals(差分约束)
- Spring3:类型安全依赖项注入
- C语言作业二选择结构,C语言第二次作业参考答案选择结构.pdf
- SPSS基础教程:SPSS菜单命令详解(三)
- 基于BIM+3DGIS的智慧城市基础设施管理
- android sqlite多条件查询,sqlite 多条件查询
- Android地图轨迹抽稀、动态绘制
- 05 js面向对象(属性操作符,创建对象)
- CSDN的MD编辑器【写作技巧】
- 计算机网络大学宿舍组网方案设计,学生公寓组网方案推荐 精品推荐
- Dynamics CRM IFD部署后延长系统注销时间
- JAVA面试题集(2) (转)
- git小乌龟TortoiseGit的使用
- C/C++后端学习秘籍
- 1秒消失 alert jquery_jquery 弹窗信息显示几秒后自动消失
- 2020 蓝桥杯大学 B 组省赛模拟赛 七巧板
热门文章
- c# webclient 保存会话信息_会话保持机制cookie和session
- 知识图谱java实现_知识图谱:neo4j(四)Java API
- eclipse占用内存过大_Java内存泄漏分析工具Memory Analyzer Tool
- sqlserver leftjoin出现重复数据_数据库存数据时,逻辑上防重了为啥还会出现重复记录?...
- 情人节海报模板,甜到牙疼!
- 游戏迷英雄联盟游戏高清壁纸!扮演你的英雄
- html漂亮的表格模板+背景_咨询amp;金融主题响应式网站着陆页模板
- mysql 自定义函数 事务_MySQL存储过程、触发器、自定义函数、事务
- oracle服务名连接慢,数据库 – Oracle SID和服务名称;连接问题
- sql 分组求和_《从零学会SQL-第七关高级功能》课后练习