QEMU是什么
QEMU是一个通用的开源的跨平台仿真模拟器,提供user和system两种模式。其模拟的作用可是可以模拟在特定的体系结构下的应用的执行或者构建,比如在x86的体系结构的操作系统上运行ARM的应用。
常见问题的场景
在ARM体系结构的硬件环境中安装Docker,然后构建并运行ARM的镜像自然非常简单,但是如果没有ARM环境,只有x86的机器又想做这件事情,这时QEMU也就有了用武之地,比如用友的技术中台似乎就是通过QEMU来模拟ARM硬件进行模拟。
构建Arm镜像
-
获取ARM格式的ubuntu镜像
docker pull arm64v8/ubuntu:20.04
-
获取QEMU
使用它的原因是宿主的环境不是ARM架构,导致容器无法运行,所以需要QEMU来虚拟出Arm的架构。
下载地址:https://github.com/multiarch/qemu-user-static/releases
sudo cp qemu-aarch64-static /usr/bin/ sudo chmod +x /usr/bin/qemu-aarch64-static
-
注册QEMU虚拟机
docker run --rm --privileged multiarch/qemu-user-static:register
📢 重启电脑后需要重新执行注册
-
创建Arm容器
docker run --rm -it \ -v /usr/bin/qemu-aarch64-static:/usr/bin/qemu-aarch64-static \ -v /etc/timezone:/etc/timezone:ro \ -v /etc/localtime:/etc/localtime:ro \ arm64v8/ubuntu:20.04 \ bash
-
测试容器架构
root@8674accc718a:/# uname -m aarch64