
如果你使用 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 Docker镜像是一个在容器中运行虚拟机的解决方案,通过Docker容器化技术简化虚拟机的部署与管理。该镜像提供Web界面控制,支持多种磁盘格式,并集成KVM加速、内核模式网络等高性能特性,适合快速搭建隔离的虚拟机环境,适用于开发测试、操作系统学习等场景。
yamlservices: qemu: image: qemux/qemu container_name: qemu environment: BOOT: "mint" # 指定要安装的操作系统 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=mint" -p 8006:8006 \ --device=/dev/kvm --device=/dev/net/tun --cap-add NET_ADMIN \ -v "${PWD:-.}/qemu:/storage" --stop-timeout 120 docker.io/qemux/qemu
shellkubectl apply -f https://raw.githubusercontent.com/qemus/qemu/refs/heads/master/kubernetes.yml
https://github.com/codespaces/badge.svg]([***]
| 变量名 | 说明 | 默认值 |
|---|---|---|
BOOT | 指定要下载的操作系统(如"ubuntu") | 无 |
DISK_SIZE | 磁盘大小(如"128G") | "64G" |
RAM_SIZE | 内存大小(如"8G") | "2G" |
CPU_CORES | CPU核心数(如"4") | "2" |
BOOT_MODE | 启动模式,"uefi"或"legacy"(传统BIOS) | "uefi" |
DISK_TYPE | 磁盘类型,"scsi"、"blk"或"ide" | "scsi" |
DHCP | 是否通过路由器获取IP("Y"或"N") | "N" |
ARGUMENTS | 传递给QEMU的额外参数 | 无 |
DEBUG | 是否启用调试模式("Y"或"N") | "N" |
/storage: 虚拟机存储目录,用于存放磁盘镜像等数据,建议通过宿主机目录或命名卷挂载/boot.iso、/boot.img、/boot.qcow2: 本地镜像文件挂载,挂载后BOOT变量将被忽略--device=/dev/kvm: 启用KVM硬件加速(需宿主机支持)--device=/dev/net/tun: 启用网络隧道--cap-add=NET_ADMIN: 添加网络管理权限,支持网络配置非常简单,步骤如下:
BOOT变量指定要安装的操作系统通过BOOT环境变量指定要下载的操作系统,例如:
yamlenvironment: BOOT: "mint"
支持的操作系统及大小如下表:
| 值 | 操作系统 | 大小 |
|---|---|---|
alma | Alma Linux | 2.2 GB |
alpine | Alpine Linux | 60 MB |
arch | Arch Linux | 1.2 GB |
cachy | CachyOS | 2.6 GB |
centos | CentOS | 7.0 GB |
debian | Debian | 3.3 GB |
fedora | Fedora | 2.3 GB |
gentoo | Gentoo | 3.6 GB |
kali | Kali Linux | 3.8 GB |
kubuntu | Kubuntu | 4.4 GB |
mint | Linux Mint | 2.8 GB |
manjaro | Manjaro | 4.1 GB |
mx | MX Linux | 2.2 GB |
nixos | NixOS | 2.4 GB |
suse | OpenSUSE | 1.0 GB |
rocky | Rocky Linux | 2.1 GB |
slack | Slackware | 3.7 GB |
tails | Tails | 1.5 GB |
ubuntu | Ubuntu Desktop | 6.0 GB |
ubuntus | Ubuntu Server | 3.0 GB |
xubuntu | Xubuntu | 4.0 GB |
zorin | Zorin OS | 3.8 GB |
有两种方式使用自定义镜像:
通过URL下载:将BOOT变量设置为镜像文件的URL,支持.iso、.img等格式及压缩文件(会自动解压),例如:
yamlenvironment: BOOT: "https://dl-cdn.alpinelinux.org/alpine/v3.19/releases/x86_64/alpine-virt-3.19.1-x86_64.iso"
本地文件挂载:将本地镜像文件挂载到容器中,例如:
yamlvolumes: - ./example.iso:/boot.iso # 或/boot.img、/boot.qcow2
此时BOOT变量将被忽略。
通过卷挂载修改存储目录,例如:
yamlvolumes: - ./自定义目录:/storage # 将./自定义目录替换为宿主机实际目录或命名卷
通过DISK_SIZE环境变量设置磁盘大小(默认64G),例如:
yamlenvironment: DISK_SIZE: "128G" # 支持增大现有磁盘,不会丢失数据
[!TIP] 此参数也可用于扩容现有磁盘,且不会导致数据丢失。
默认分配2核CPU和2GB内存,可通过以下环境变量调整:
yamlenvironment: RAM_SIZE: "8G" # 内存大小,如"4G"、"8G" CPU_CORES: "4" # CPU核心数,如"2"、"4"
使用https://github.com/qemus/qemu-arm/%E5%AE%B9%E5%99%A8%E8%BF%90%E8%A1%8CARM64%E6%9E%B6%E6%9E%84%E7%9A%84%E9%95%9C%E5%83%8F%E3%80%82
建议使用https://github.com/dockur/windows%EF%BC%8C%E8%AF%A5%E9%95%9C%E5%83%8F%E5%8C%85%E5%90%AB%E5%AE%89%E8%A3%85%E6%89%80%E9%9C%80%E7%9A%84%E9%A9%B1%E5%8A%A8%E5%8F%8A%E6%9B%B4%E5%A4%9A%E5%8A%9F%E8%83%BD%E3%80%82
建议使用https://github.com/dockur/macos%EF%BC%8C%E8%AF%A5%E9%95%9C%E5%83%8F%E5%B7%B2%E9%85%8D%E7%BD%AE%E6%AD%A3%E7%A1%AE%E7%9A%84%E8%AE%BE%E7%BD%AE%E5%B9%B6%E8%87%AA%E5%8A%A8%E4%B8%8B%E8%BD%BD%E5%AE%89%E8%A3%85%E6%96%87%E4%BB%B6%E3%80%82
默认启用UEFI启动,若操作系统不支持,可通过BOOT_MODE变量切换为传统BIOS:
yamlenvironment: BOOT_MODE: "legacy"
默认使用virtio-scsi驱动以提高性能,若操作系统无法识别磁盘,可通过DISK_TYPE变量修改:
yamlenvironment: DISK_TYPE: "blk" # 或"ide"(兼容性好但速度慢)
首先检查软件兼容性:
| 产品 | Linux | Win11 | Win10 | macOS |
|---|---|---|---|---|
| Docker CLI | ✅ | ✅ | ❌ | ❌ |
| Docker Desktop | ❌ | ✅ | ❌ | ❌ |
| Podman CLI | ✅ | ✅ | ❌ | ❌ |
| Podman Desktop | ✅ | ✅ | ❌ | ❌ |
在Linux系统中,通过以下命令检查硬件支持:
bashsudo apt install cpu-checker sudo kvm-ok
若kvm-ok提示不支持KVM,需检查:
ports中添加端口映射,例如- 2222:22将虚拟机22端口映射到宿主机2222端口USER_PORTS变量中指定端口,例如USER_PORTS: "22,80,443"创建macvlan网络使容器获得独立IP:
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文件中使用该网络:
yamlservices: qemu: ... networks: vlan: ipv4_address: 192.168.0.100 # 分配的IP networks: vlan: external: true
[!IMPORTANT] 由于macvlan设计限制,容器IP无法从Docker宿主机直接访问,需创建第二个macvlan作为 workaround。
配置macvlan网络后,通过以下设置使虚拟机成为家庭网络的一部分(容器和虚拟机将有独立IP):
yamlenvironment: DHCP: "Y" devices: - /dev/vhost-net device_cgroup_rules: - 'c *:* rwm'
通过环境变量和卷挂载添加额外磁盘:
yamlenvironment: DISK2_SIZE: "32G" # 第二个磁盘大小 DISK3_SIZE: "64G" # 第三个磁盘大小 volumes: - ./存储目录2:/storage2 # 第二个磁盘存储目录 - ./存储目录3:/storage3 # 第三个磁盘存储目录
通过devices挂载物理磁盘或分区:
yamldevices: - /dev/sdb:/disk1 # 主磁盘 - /dev/sdc1:/disk2 # 次要磁盘(/disk2及以上)
lsusb命令获取设备的vendorid和productid(如0x1234:0x1234)yamlenvironment: ARGUMENTS: "-device usb-host,vendorid=0x1234,productid=0x1234" # 替换为实际ID devices: - /dev/bus/usb
若客户机支持9pfs,可通过以下步骤共享文件:
yamlvolumes: - ./共享目录:/shared # ./共享目录为宿主机目录
shellmount -t 9p -o trans=virtio shared /mnt/共享目录 # /mnt/共享目录为客户机挂载点
通过ARGUMENTS环境变量传递额外参数:
yamlenvironment: ARGUMENTS: "-device usb-tablet" # 示例:添加USB平板设备
若要查看完整QEMU命令行参数,启用调试模式:
yamlenvironment: DEBUG: "Y"
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务