基于buildah构建跨平台容器镜像的方法、系统及电子设备技术方案

技术编号:33348155 阅读:9 留言:0更新日期:2022-05-08 09:47
本发明专利技术公开一种基于buildah构建跨平台容器镜像的方法、系统及电子设备,方法包括:启用QEMU模拟器,为构建跨平台容器镜像提供多种CPU架构;启用binfmt_misc,将目标平台的CPU架构转换为当前系统支持的CPU架构;启用buildah工具,传入目标平台的CPU架构信息,根据CPU架构信息拉取基础镜像,对多个目标平台的容器镜像进行构建。调用QEMU模拟器来执行不同CPU指令集;再调用binfmt_misc支持工具,以便能够支持二进制,并在注册QEMU模拟器时实际使用;最后采用buildah工具来构建跨平台的CPU架构的容器镜像,根据指定的CPU架构信息拉取特定的基础镜像,无需在文件做变量替换等方式,简化了Dokcerfile编写和使用的复杂度。了Dokcerfile编写和使用的复杂度。了Dokcerfile编写和使用的复杂度。

【技术实现步骤摘要】
基于buildah构建跨平台容器镜像的方法、系统及电子设备


[0001]本专利技术涉及计算机程序
,具体涉及一种基于buildah构建跨平台容器镜像的方法、系统及电子设备。

技术介绍

[0002]在日常工作中,经常需要将某个程序跑在不同的CPU架构上,比如让某些软件运行在嵌入式路由器设备上。特别是容器技术席卷全球之后,可以轻松地在ARM设备上通过容器部署各种应用,而不用在意各种系统的差异性。但是想要跨平台构建容器镜像并不是一件轻松的活,要么到不同CPU架构的系统上全部构建一遍,要么就得在当前系统上通过虚拟化技术模拟不同的CPU架构,最后可能还要想办法合并镜像。
[0003]要实现一次构建,随处可用,挑战在于:Linux、Windows这些不同的操作系统拥有不同的系统API;x86、Arm、IBM PowerPC这些不同的硬件平台的指令集不同,某些同平台的硬件甚至拥有不同的专用指令集用于加速应用。因此,要构建能够在不同操作系统、不同硬件平台的运行的应用程序,仍然需要工程师们针对具体的操作系统和硬件平台进行海量的移植工作。
[0004]经检索发现,公开号CN111309451A的中国专利于2020年06月19日公开了一种实现Docker镜像交叉编译的方法,具体包括以下步骤:S1、在Docker镜像交叉编译环境系统上安装qemu

user

static服务程序,S2、检查Linux系统中的binfmt_misc是否注册对应的模拟器配置,S3、确定需要交叉编译的Docker镜像的CPU架构类型,S4、编写构建Docker镜像的Dockerfile文件,不同目标CPU架构的Docker镜像使用同一个Dockerfile文件来构建,S5、通过查看生成的Docker镜像中的标识来确认校验生成的Docker镜像是否为目标CPU架构的镜像,本专利技术涉及计算机程序
该实现Docker镜像交叉编译的方法,在启动应用编译环境时,能够完全的屏蔽掉底层硬件设施的差异,解决了跨平台交叉编译的问题,从而使得能够在快速启动应用交叉编译环境的同时,也能够屏蔽掉底层硬件差异带来的问题。
[0005]但是,该专利需下载基础镜像并更改tag,增加dockerfile环境变量,构建容器镜像的方法相对复杂。因此,基于buildah工具,研究并使用更为简单的方法,实现容器镜像的构建,仍然是本领域技术人员研究的方向。

技术实现思路

[0006]为克服上述现有技术的不足,本专利技术提供一种基于buildah构建跨平台容器镜像的方法、系统及电子设备,使用更为简单的方法,实现容器镜像的构建。
[0007]本专利技术一方面提供一种基于buildah构建跨平台容器镜像的方法,包括,启用QEMU模拟器,为构建跨平台容器镜像提供多种CPU架构;启用binfmt_misc,将目标平台的CPU架构转换为当前系统支持的CPU架构;启用buildah工具,传入目标平台的CPU架构信息,根据CPU架构信息拉取基础镜像,对多个目标平台的容器镜像进行构建。
[0008]上述技术方案中,调用QEMU模拟器来执行不同CPU指令集;再调用binfmt_misc支
持工具,以便能够支持二进制,并在注册QEMU模拟器时实际使用;最后采用buildah工具来构建跨平台的CPU架构的容器镜像,根据指定的CPU架构信息拉取特定的基础镜像,无需在文件做变量替换等方式,简化了Dokcerfile编写和使用的复杂度。
[0009]优选地,将目标平台的CPU架构转换为当前系统支持的CPU架构,进一步包括:由QEMU模拟器将通过binfmt_misc在Linux内核中注册一个二进制转换处理程序,并在程序运行时动态翻译二进制文件,将目标平台的CPU架构转换为当前系统支持的CPU架构。
[0010]具体地,转换CPU架构,最终的效果看起来就像在本地运行目标CPU架构的二进制文件。
[0011]优选地,创建manifest,合并构建得到的多个目标平台的容器镜像,将合并的结果上传至镜像仓库。
[0012]具体地,将容器镜像合并之后整体上传到镜像仓库,避免单个多次上传;使用时也会根据跨平台的宿主机CPU架构自动拉取对应容器镜像,这对于容器镜像的管理和后续使用提供了便利。
[0013]优选地,构建跨平台容器镜像的形式包括但不限于命令行和Dockerfile。
[0014]优选地,构建跨平台容器镜像的操作系统包括但不限于windows和linux。
[0015]优选地,若使用linux操作系统构建跨平台容器镜像,则需要手动启用binfmt_misc。
[0016]具体地,有多种实现方式方式手动启用binfmt_misc,包括“qemu

user

binfmt”,“qemu

user

static”,“binfmt”,设置可以利用docker,podman等运行容器实现该功能。
[0017]本专利技术还一方面提供一种基于buildah构建跨平台容器镜像的系统,用于实现所述基于buildah构建跨平台容器镜像的方法的步骤,包括,CPU架构提供模块,用于启用QEMU模拟器,为构建跨平台容器镜像提供多种CPU架构;CPU架构转换模块,用于启用binfmt_misc,将目标平台的CPU架构转换为当前系统支持的CPU架构;容器镜像构建模块,用于启用buildah工具,传入目标平台的CPU架构信息,根据CPU架构信息拉取基础镜像,对多个目标平台的容器镜像进行构建。
[0018]优选地,系统还包括容器镜像合并模块,用于创建manifest,合并构建的不同CPU架构的容器镜像,将合并的结果上传至镜像仓库。
[0019]具体地,所述CPU架构提供模块为构建跨平台容器镜像提供多种CPU架构;所述CPU架构转换模块将跨平台的CPU架构转换为当前系统支持的CPU架构;所述容器镜像构建模块通过一个Dockerfile构建不同CPU架构的容器镜像;所述容器镜像合并模块合并构建的不同CPU架构的容器镜像,将合并的结果上传至镜像仓库。
[0020]本专利技术另一方面提供一种电子设备,所述设备包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时,实现所述基于buildah构建跨平台容器镜像的方法。
[0021]与现有技术相比,本专利技术的有益效果包括:
[0022](1)本专利技术调用QEMU模拟器来执行不同CPU指令集;再调用binfmt_misc支持工具,以便能够支持二进制,并在注册QEMU模拟器时实际使用;最后采用buildah工具来构建跨平台的CPU架构的容器镜像,根据指定的CPU架构信息拉取特定的基础镜像,无需在文件做变量替换等方式,简化了Dokcerfile编写和使用的复杂度;
[0023](2)本专利技术采用的buildah工具支持OCI标准的容器规范,buildah不同于doc本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.基于buildah构建跨平台容器镜像的方法,其特征在于,包括,启用QEMU模拟器,为构建跨平台容器镜像提供多种CPU架构;启用binfmt_misc,将目标平台的CPU架构转换为当前系统支持的CPU架构;启用buildah工具,传入目标平台的CPU架构信息,根据CPU架构信息拉取基础镜像,对多个目标平台的容器镜像进行构建。2.根据权利要求1所述的基于buildah构建跨平台容器镜像的方法,其特征在于,将目标平台的CPU架构转换为当前系统支持的CPU架构,进一步包括:由QEMU模拟器将通过binfmt_misc在Linux内核中注册一个二进制转换处理程序,并在程序运行时动态翻译二进制文件,将目标平台的CPU架构转换为当前系统支持的CPU架构。3.根据权利要求1所述的基于buildah构建跨平台容器镜像的方法,其特征在于,创建manifest,合并构建得到的多个目标平台的容器镜像,将合并的结果上传至镜像仓库。4.根据权利要求1所述的基于buildah构建跨平台容器镜像的方法,其特征在于,构建跨平台容器镜像的形式包括但不限于命令行和Dockerfile。5.根据权利要求1所述的基于buildah构建跨平台容器镜像的方法,其特征在于,构建跨平台容器镜像的操作...

【专利技术属性】
技术研发人员:宋景略
申请(专利权)人:徐工汉云技术股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1