在x86架构下构建arm64镜像

工作中需要再CI/CD机器上构建arm64的镜像,但CI/CD机器又是X86的机器,记录一下如何实现,基于qemu

下载qemu镜像

1
2
3
# 分别用于向内核的binfmt_misc注册可执行文件,以及用于arm64指令翻译为x86指令
$ docker pull multiarch/qemu-user-static:register
$ docker pull multiarch/qemu-user-static:x86_64-aarch64

运行register镜像

1
2
# 向内核的binfmt_misc进行注册:
$ docker run --rm --privileged multiarch/qemu-user-static:register --reset

编写Dockerfile

1
2
3
4
5
6
7
FROM multiarch/qemu-user-static:x86_64-aarch64 as qemu

FROM centos:centos7

COPY --from=qemu /usr/bin/qemu-aarch64-static /usr/bin

# 你的构建命令。。。。。。

构建

1
2
3
4
# 执行构建
$ docker build -t xxx-imgage:0.0.1-arm64 .
# 然后,你可以检查一下该镜像的架构:
$ docker inspect xxx-imgage:0.0.1-arm64