S2I 概念

S2I(Source To Image)即从源码到镜像的一个过程,OpenShift 将它作为基础功能提供给用户,包含 S2I CLI 工具 与 S2I 流程。通过这些工具和既定流程,能去掉开发和运维人员手动打镜像复杂性,只需要点一下构建按钮就能将 Git 仓库中的源码或程序制品打包成镜像,上传到镜像仓库中,触发后续的部署流程。

S2I 的组成

  • S2I CLI 工具 - 生成构建S2I镜像需要的基础环境(包含默认Dockerfile、脚本、测试脚本)
  • 基础镜像 - 由基础环境中的Dockerfile中定义的镜像
  • 构建/运行脚本 - 构建与运行时脚本
    • save-artifacts - 用于保存增量构建「可选」
    • assemble - 组装复制制品到指定位置
    • run - 应用启动脚本
    • usage - 打印帮助提示
    • test/run - 测试运行脚本

S2I 流程

上边这张流程图来自官方文档以及参考更多资料,本人概括一下大致的流程:

  1. 首先下载 STI 脚本,这些脚本来自于 openshift/origin-docker-builder:<OpenShift版本> 这个镜像,所以是 pull 镜像。
  2. 使用以上镜像启动构建 docker 的容器,根据 BuildConfig 以及S2I镜像的 Dockerfile 标签定义,开始多阶段构建镜像
  3. 执行 openshift-git-clone --loglevel=0 命令,根据配置的参数拉取 Git 仓库上的源码或制品,拉到 /tmp (位置根据 s2i 镜像的标签 io.openshift.s2i.destination 定义),创建tar包,开始第二阶段构建
  4. 执行 openshift-manage-dockerfile --loglevel=0 修改 Dockerfile,修改 CMD 启动命令改为 执行 run 脚本,开始第三阶段构建
  5. 执行 openshift-sti-build --loglevel=0 执行 STI 脚本调用 assemble 将源码构建成制品再复制制品到指定目录,或者将制品放到指定目录,执行脚本完成后构建镜像(docker commit),最后推送镜像到内部镜像仓库,首次推送生成镜像流(ImageStream),任务完成停止容器。

总结

S2I 减少了开发运维人员打镜像的繁复步骤,将源码或制品构造成标准的、可部署的镜像。构建流程总体上就三步 下载 - 构建 - 推送

由于作者理解可能有所偏颇,文章中可能出现错误,希望能得到您的评论指出,在此感谢。

接下来几天,本人会更新自定义 OpenShift 镜像和模板相关内容,静请期待。

本文同步发布于CSDN https://blog.csdn.net/u012586326/article/details/121363875 与 博客园 https://www.cnblogs.com/hellxz/,禁止转载。

OpenShift S2I 概念及流程的更多相关文章

  1. 自定义 OpenShift s2i 镜像与模板——OracleJDK8

    本文目标 由于 OpenShift 官方提供的镜像与模板(OpenJDK8)不完全满足业务需要: 不包含飞行记录功能.只有 OpenJDK11 以上才被 Oracle 开源 生成堆 dump 很大很慢 ...

  2. MVC基本概念和流程

    MVC基本概念和流程 MVC的概念 Model(模型):包含数据和行为.不过现在一般都分离开来:Value Object(数据) 和 服务层(行为). View(视图):负责进行模型的展示,一般就是展 ...

  3. Git基本概念,流程,分支,标签及常用命令

    Git基本概念,流程,分支,标签及常用命令 Git一张图 Git基本概念 仓库(Repository) 分支(Branch) Git工作流程 Git分支管理(branch) 列出分支 删除分支 分支合 ...

  4. MySQL事务概念与流程和索引控制

    MySQL事务概念与流程和索引控制 视图 1.什么是视图 我们在执行SQL语句其实就是对表进行操作,所得到的其实也是一张表,而我们需要经常对这些表进行操作,拼接什么的都会产生一张虚拟表,我们可以基于该 ...

  5. (一)spring MVC基本概念和流程

    MVC的概念 Model(模型):包含数据和行为.不过现在一般都分离开来:Value Object(数据) 和 服务层(行为). View(视图):负责进行模型的展示,一般就是展示给用户的界面. Co ...

  6. scrapy的基础概念和流程

    1. 什么是scrapy Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,我们只需要实现少量的代码,就能够快速的抓取. Scrapy 使用了Twisted['twɪstɪd]异步网 ...

  7. 考研部分概念和流程(若不全和错误可提示我补充,另考研帮app推荐)

    上大学必须经过全国统一高考,而就读硕士研究生的途径相对而言要多一些,也更灵活一些.已经工作的人,除了放弃工作报考研究生以外,还可以不脱产申请攻读学位,或申请单独考试.不脱产申请攻读学位,通俗的讲,就是 ...

  8. word2vec:主要概念和流程

    1.单词的向量化表示 一般来讲,词向量主要有两种形式,分别是稀疏向量和密集向量. 所谓稀疏向量,又称为one-hot representation,就是用一个很长的向量来表示一个词,向量的长度为词典的 ...

  9. OpenShift实战(七):OpenShift定制镜像S2I

    1.基础镜像制作 由于公司的程序是Java开发,上线发布使用的是maven,如果使用openshift自带的S2I,每次都会全量拉取代码(代码比较多,每次全量拉太慢),然后每次打包都会再一次下载mav ...

随机推荐

  1. 从Gartner与IDC三大行业报告,看国产RPA的市场规模与未来发展

    从Gartner与IDC三大行业报告,看国产RPA的市场规模与未来发展 Gartner与IDC的三份报告,描绘出中国RPA的市场规模与未来宏图 文/王吉伟 近期的国产RPA,可谓捷报频频.三个重量级行 ...

  2. TCP协议基本概念

    TCP协议最主要的特点 TCP是面向连接的运输层协议.这就是说,应用程序在使用TCP协议之前,必须要建立TCP连接,且在传输完毕后,还要断开连接. 每一条TCP连接只能有两个端点,每一条TCP连接只能 ...

  3. NOIP 模拟五 考试总结

    T1string T1开的不错,看到这个题很激动,类似与HEOI2016排序,好像还要更简单一些,于是迅速冲了个桶排.因为洛谷上排序那道题是用桶排水的,所以我觉得没必要打线段树了,极端大数据20秒冲过 ...

  4. break和continue关键字

    什么是break break 跳出最里层的循环,并且继续执行该循环下面的语句 就是强制退出循环 示例 package struct; public class ForDemo05 { public s ...

  5. 阿里 Midway 正式发布 Serverless v1.0,研发提效 50%

    Github:https://github.com/midwayjs/midway 开源为了前端和 Node.js 的发展,点 Star! 去年阿里提出 Serverless 架构,并利用其新一代研发 ...

  6. c++-string类--insert函数

    string &insert(int p0, const char *s);--在p0位置插入字符串s string &insert(int p0, const char *s, in ...

  7. change or reset WSL password

    change or reset WSL password To change or reset your password, open the Linux distribution and enter ...

  8. Boost Started on Windows

    Boost 官网指南 Boost C++ Libraries Boost Getting Started on Windows - 1.77.0 ① 下载 Boost.7z包 下载 .7z包 boos ...

  9. Golang通脉之数组

    数组是同一种数据类型元素的集合.数组在内存中都是连续存放的. 在Go语言中,数组从声明时就确定,使用时可以修改数组成员,但是数组大小不可变化. 基本语法: // 定义一个长度为3元素类型为int的数组 ...

  10. CentOS 文本编辑器

    目录 1.Nano 1.1.基础命令 1.2.快捷操作 1.3.配置文件 2.Vim 2.1.四大模式 2.2.基础命令 2.3.标准操作 2.4.高级操作 2.5.配置文件 Linux 终端的文本编 ...