台式机上编译arm架构的docker镜像,但是手头上没有现成的arm架构的机器环境,可以使用qemu实现,在网上找了几个教程后,比如:
qemu教程1
qemu教程2
操作了半天在 注册qemu-user-static虚拟机这一项存在问题。主要是multiarch/qemu-user-static:register 主要问题如下:
运行 $docker images
可以看到multiarch/qemu-user-static:register 只有1.27MB,当然注册的虚拟机也就无法work。
正确的流程如下:
qumu-user-static
项目地址:multiarch/qemu-user-static
qemu-user-static是一个用于利用当前操作系统来运行其它架构的一个仿真器,这个github项目可以通过x86的机器编译出其它各个架构的docker镜像。
支持的指令集架构:
armv7l
ppc64le
s390x
aarch64
armv7l
ppc64le
docker 安装
docker file
很多开发环境提提供 Dockerfile
sudo docker build . -t aarch64/ubuntu:v1
正常情况下会遇到如下问题:
---> [Warning] The requested image's platform (linux/arm64) does not match the detected host platform (linux/amd64) and no specific platform was requested
---> Running in 0f611656574e
standard_init_linux.go:228: exec user process caused: exec format error
解决方法
(1)安装qemu相关
sudo apt-get install qemu binfmt-support qemu-user-static
(2)注册qemu-user-static虚拟机
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
运行
$ docker ps -a
可以看到:
说明注册成功,
然后继续运行上面dockerfile 镜像生成