qemu-user-static, 在x86机器上编译arm架构docker

台式机上编译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 安装

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 镜像生成

你可能感兴趣的:(嵌入式平台,linux,docker,arm,架构,linux,qemu)