助力信创:使用建木快速构建多架构OCI镜像
作者:shaojiacheng
发布时间:2022-11-16 10:00:00
起因
随着国产cpu的发展以及苹果推出m芯片,越来越多的产品不得不考虑自身对arm架构的兼容,前不久有个同事火急火燎找我说,“你有arm架构的服务器吗,软件需要做一个认证,需要部署在arm服务器上,但我们的镜像都是amd64架构的,需要在arm服务器上重新构建一遍”,听了他的诉求后,我想了想,“虽然我没有arm的服务器,但是我们可以试试建木”,于是我们就探究起用建木编译arm架构镜像的方法。
节点介绍
建木的docker_image_build节点前不久新推出了1.3.1版本,通过buildx来支持构建不同cpu体系结构的镜像,只需要根据要求配置platform参数即可,不过,由于buildx本身的原因,该节点有以下使用限制:
- 由于buildx是docker在19.03版本中引入的特性,所以使用前需确保worker所在的docker版本>=19.03;
- 使用buildx需要在docker服务端开启实验室特性,从 20.10 版本开始,Docker CLI 所有实验特性的命令均默认开启,无需再进行配置或设置系统环境变量;
- buildx通过在内核中使用 QEMU 仿真支持来进行多架构镜像构建,需要宿主机支持qeum并确保内核>=4.8;
- 需要具备访问dockerhub的条件以下载用于多平台镜像构建的模拟器,或自行下载后手动导入;
- 需要确保base的镜像支持指定的架构。
开始编译
准备就绪后,我们开始了尝试,在建木上新建图形项目,选择git_clone节点拉取项目文件后,调用docker_image_build:1.3.1节点来构建amd64和arm64的镜像。
结果
过程十分顺利,短短2分钟后流程便执行完毕,同事拿到了镜像之后,连连竖起大拇指,我则趁机给他安利起了这北半球第二好用的ci/cd平台。