iSula 容器镜像构建工具 isula-build 架构介绍-鸿蒙开发者社区-51CTO.COM

iSula 容器镜像构建工具 isula-build 架构介绍

ywz888
发布于 2022-8-2 17:39
浏览
0收藏

isula-build目的是提供iSula生态下的容器镜像构建能力,实现极速加载、安全和跨架构的镜像构建。关于它的安装使用,我们往期文章中已经做了详细介绍,具体请参考:iSula 容器镜像构建工具 isula-build 常用功能介绍

 

架构


isula-build采用经典的 C-S 架构,分为客户端isula-build和服务端isula-builder,客户端和服务端使用GRPC通信。用户可通过isula-build命令行与服务端isula-builder进行交互,发起镜像构建、镜像管理等请求。iSula 容器镜像构建工具 isula-build 架构介绍-鸿蒙开发者社区

isula-build 架构全景

 

下面分别详细介绍isula-buildisula-builder

 

客户端 isula-build


作为用户与后端服务沟通的桥梁,客户端以命令行方式封装了各种常用的用户操作,包括镜像管理(isula-build ctr-img)、仓库登录/登出(isula-build login/isula-build logout)、版本查询(isula-build version)等。iSula 容器镜像构建工具 isula-build 架构介绍-鸿蒙开发者社区

isula-build 客户端和服务器端模块交互

 

当前isula-build客户端支持如下命令:iSula 容器镜像构建工具 isula-build 架构介绍-鸿蒙开发者社区

以最核心的isula-build ctr-img -f Dockerfile -o docker-archive:name.tar:image:tag .为例,当接受到用户的命令行输入后,客户端会做一系列的用户参数校验以及准备工作,最后封装镜像构建请求,并请求转发给服务端开始构建,在构建过程中,客户端的progressUI模块不断接收并打印后端回传的构建进展,localExporter不断接收和保存后端回传的镜像 tar 流到本地,最终完成整个镜像构建任务。iSula 容器镜像构建工具 isula-build 架构介绍-鸿蒙开发者社区

isula-build 客户端模块

 

client: 获取用户入参,检查参数合法性


localExporter: 接收 GRPC stream 流,将镜像内容写入本地


processUI: 接收 GRPC stream 流,在镜像构建过程中持续打印构建进度


GRPC Client: 与服务端建立 GRPC 通信信道

 

服务端 isula-builder


服务端是镜像构建服务的提供者,以 daemon 形式常驻后台镜像构建和管理服务,它通过接收客户端的GRPC请求,处理并响应请求。iSula 容器镜像构建工具 isula-build 架构介绍-鸿蒙开发者社区

isula-build 服务模块

 

同样,以镜像构建请求为例,服务端收到构建请求后,会转发给Backend模块,将请求路由给对应的后端GRPC Build方法来处理。Build方法根据参数生成一个builder,一个buider可理解为为一次构建请求创建的构建器或执行器,后续一系列的执行流程都由它来负责。

 

isula-build镜像构建本质上就是在FROM指定的基础镜像之上,创建一个读写层,然后根据Dockerfile指令填充相关的镜像结构和写入层数据内容。

 

构建流程中涉及关键组件包括:

 

 •  Parser,buider 将客户端传过来的 Dockerfile 解析成一个 Playbook,类似 Ansible 的 Playbook,镜像构建将基于这个 Playbook 去演绎。


 •  Runner,Runner 本质上是对 runc 的封装,当处理 Dockerfile 中的 RUN 指令时,正是通过 runc 创建一个容器,在它的基础上执行 RUN 相关的操作。


 •  Store,Store 主要用来存储和管理镜像、镜像层以及镜像元数据相关的内容。


 •  Exporter,如果需要导出镜像,exporter 将完成导出操作,支持将镜像导出到 docker daemon,isulad daemon 或客户端本地 tar 包等。

 

展望


随着未来isula-build镜像构建还将支持提供更多功能:比如rootless,SmartLoading,对接kubernetes等,isula-build的架构还会继续演进,以便更好地融合云原生生态,提供安全、可信、快速的镜像服务。

 

文章转载自公众号:openEuler

分类
标签
已于2022-8-2 17:39:46修改
收藏
回复
举报
回复
    相关推荐