
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
QEMU ARM64 Docker镜像是一个基于QEMU的容器化解决方案,用于在Docker环境中运行ARM架构的虚拟机。该镜像支持Raspberry Pi 5等多种ARM设备,可通过容器化方式快速部署和管理ARM虚拟机,简化ARM架构操作系统的运行与测试流程。
.iso、.img、.qcow2、.vhd、.vhdx、.vdi、.vmdk及.raw等主流磁盘格式yamlservices: qemu: container_name: qemu image: docker.xuanyuan.run/qemux/qemu-arm environment: BOOT: "ubuntu" # 指定预定义操作系统或镜像URL devices: - /dev/kvm # 启用KVM加速(需宿主机支持) - /dev/net/tun # 启用网络虚拟化 cap_add: - NET_ADMIN # 添加网络管理权限 ports: - 8006:8006 # Web控制台端口映射 volumes: - ./qemu:/storage # 存储虚拟机磁盘与配置 restart: always stop_grace_period: 2m # 优雅停止等待时间
bashdocker run -it --rm \ --name qemu \ -e "BOOT=ubuntu" \ -p 8006:8006 \ --device=/dev/kvm \ --device=/dev/net/tun \ --cap-add NET_ADMIN \ -v "${PWD:-.}/qemu:/storage" \ --stop-timeout 120 \ # 对应stop_grace_period qemux/qemu-arm
Kubernetes:
shellkubectl apply -f https://raw.githubusercontent.com/qemus/qemu-arm/refs/heads/master/kubernetes.yml
GitHub Codespaces:
https://github.com/codespaces/badge.svg]([***]
通过8006端口提供Web界面,支持键盘、鼠标直接交互,无需安装额外VNC客户端,简化虚拟机控制流程。
支持多种虚拟磁盘格式及压缩文件(自动解压):
| 扩展名 | 格式类型 | 支持的压缩格式 |
|---|---|---|
.img/.raw | 原始磁盘 | .img.gz、.raw.xz等 |
.iso | 光盘镜像 | .iso.zip、.iso.bz2等 |
.qcow2 | QEMU专有格式 | .qcow2.xz、.qcow2.gz等 |
.vmdk | VMware格式 | - |
.vhd/.vhdx | Hyper-V格式 | - |
.vdi | VirtualBox格式 | - |
/dev/kvm设备直通,利用硬件虚拟化技术提升性能vhost-net加速,降低网络延迟| 变量名 | 用途描述 | 默认值 | 示例取值 |
|---|---|---|---|
BOOT | 指定启动源,可为预定义操作系统名称或镜像URL | - | ubuntu、https://xxx.iso |
DISK_SIZE | 主磁盘大小 | 64G | 128G、50000M |
RAM_SIZE | 虚拟机内存大小 | 2G | 8G、4096M |
CPU_CORES | 虚拟机CPU核心数 | 2 | 4、8 |
VGA | 显示适配器类型,virtio-gpu支持高分辨率(需 guest 驱动支持) | 帧缓冲模式 | virtio-gpu |
DHCP | 是否启用虚拟机独立DHCP(需配合macvlan网络) | N | Y |
USER_PORTS | 用户模式网络下需暴露的端口(逗号分隔) | - | 22,80,443 |
ARGUMENTS | 传递给QEMU的额外命令行参数 | - | -device usb-tablet |
DEBUG | 是否启用调试模式(输出完整QEMU命令行参数) | - | Y |
预定义操作系统(BOOT变量取值)
| 值 | 操作系统 | 大小 |
|---|---|---|
alma | Alma Linux | 1.7 GB |
alpine | Alpine Linux | 60 MB |
cachy | CachyOS | 2.6 GB |
centos | CentOS | 6.4 GB |
debian | Debian | 3.7 GB |
fedora | Fedora | 2.9 GB |
gentoo | Gentoo | 1.3 GB |
kali | Kali Linux | 3.4 GB |
nixos | NixOS | 2.4 GB |
suse | OpenSUSE | 1.0 GB |
rocky | Rocky Linux | 1.9 GB |
ubuntu | Ubuntu Desktop | 3.3 GB |
ubuntus | Ubuntu Server | 2.7 GB |
| 卷路径 | 用途描述 | 示例挂载方式 |
|---|---|---|
/storage | 虚拟机主磁盘存储目录(包含系统盘及配置文件) | -v ./qemu:/storage |
/shared | 与宿主机共享的9pfs文件系统(需 guest 执行mount -t 9p shared /mnt) | -v ./host_dir:/shared |
/storage2 | 第二块磁盘存储目录(需配合DISK2_SIZE) | -v ./disk2:/storage2 |
/boot.iso | 本地ISO镜像直通(优先级高于BOOT变量) | -v ./local.iso:/boot.iso |
| 配置项 | 用途描述 | 示例配置 |
|---|---|---|
--device=/dev/kvm | 启用KVM硬件加速(必需) | 包含在devices数组中 |
--device=/dev/net/tun | 启用TUN/TAP网络设备 | 包含在devices数组中 |
--device=/dev/vhost-net | 启用vhost-net网络加速(提升网络性能) | 包含在devices数组中 |
--cap-add=NET_ADMIN | 添加网络管理权限(创建虚拟网卡、配置IP等) | 包含在cap_add数组中 |
device_cgroup_rules | 设备访问控制规则(如允许访问所有USB设备) | ['c *:* rwm'] |
| 磁盘直通 | 将物理磁盘/分区直通给虚拟机(/disk1为主盘,/disk2为从盘) | --device=/dev/sdb:/disk1 |
| USB设备直通 | 通过厂商ID和产品ID直通USB设备(需配合/dev/bus/usb设备) | ARGUMENTS: "-device usb-host,vendorid=0x1234,productid=0x5678" |
端口映射模式(默认)
通过宿主机端口转发访问虚拟机服务,适用于简单场景:
yamlports: - 8006:8006 # Web控制台 - 2222:22 # SSH服务(guest 22端口映射到宿主机2222)
macvlan网络模式(独立IP)
为虚拟机分配独立IP(与宿主机同网段),需先创建macvlan网络:
bashdocker network create -d macvlan \ --subnet=192.168.0.0/24 \ # 替换为宿主机网段 --gateway=192.168.0.1 \ # 替换为网关IP --ip-range=192.168.0.100/28 \ # 虚拟机IP范围 -o parent=eth0 vlan # 替换为宿主机物理网卡
-compose配置:
yamlnetworks: vlan: external: true services: qemu: networks: vlan: ipv4_address: 192.168.0.100 # 分配的静态IP
虚拟机独立DHCP(推荐)
使虚拟机直接从路由器获取IP(需macvlan网络):
yamlenvironment: DHCP: "Y" devices: - /dev/vhost-net device_cgroup_rules: - 'c *:* rwm'
多磁盘配置
通过环境变量定义从磁盘大小,并挂载对应存储卷:
yamlenvironment: DISK2_SIZE: "32G" # 第二块磁盘大小 DISK3_SIZE: "64G" # 第三块磁盘大小 volumes: - ./disk2:/storage2 # 第二块磁盘存储目录 - ./disk3:/storage3 # 第三块磁盘存储目录
磁盘扩容
通过修改DISK_SIZE为更大值实现无损扩容(仅支持扩容,不支持缩容):
yamlenvironment: DISK_SIZE: "128G" # 从64G扩容到128G
| 工具链 | Linux | Win11 | Win10 | macOS |
|---|---|---|---|---|
| Docker CLI | ✅ | ✅ | ❌ | ❌ |
| Docker Desktop | ❌ | ✅ | ❌ | ❌ |
| Podman CLI | ✅ | ✅ | ❌ | ❌ |
| Podman Desktop | ✅ | ✅ | ❌ | ❌ |
bashsudo apt install cpu-checker sudo kvm-ok # 输出 "KVM acceleration can be used" 表示支持
kvm-ok报错,需检查:
Windows ARM版需专用驱动支持,建议使用专用镜像:https://github.com/dockur/windows-arm
本镜像仅支持ARM架构,x86/x64镜像需使用https://github.com/qemus/qemu/
VGA: "virtio-gpu",黑屏可能是因为guest未加载驱动,需等待系统启动完成VGA变量)可解决兼容性问题以下是 qemux/qemu-arm 相关的常用 Docker 镜像,适用于 不同场景 等不同场景:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务