本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com
QEMU主机设备模型Docker镜像是基于QEMU(Quick Emulator)构建的容器化解决方案,旨在提供轻量级、可移植的硬件设备模拟能力。该镜像封装了QEMU的设备模型核心组件,支持在容器环境中快速部署硬件设备模拟器,为主机或虚拟机提供标准化的硬件抽象接口。
主要用途包括:
-v挂载插件目录)qemu-kvm包并加载kvm内核模块/dev/kvm访问权限# 拉取最新稳定版 docker pull qemu/host-device-model:latest # 拉取特定版本(如v7.2.0) docker pull qemu/host-device-model:7.2.0
docker run -d \ --name qemu-net-device \ --device /dev/kvm:/dev/kvm \ # 启用KVM加速 --cap-add NET_ADMIN \ # 网络管理权限 -v $(pwd)/device-config:/config \ # 挂载配置目录 -p 5900:5900 \ # VNC端口(显示设备用) qemu/host-device-model:latest \ --device virtio-net \ # 模拟virtio网络设备 --config /config/net-config.json \ # 设备配置文件 --accel kvm \ # 启用KVM加速 --log-level info # 日志级别
docker run -d \ --name multi-device-emulator \ --privileged \ # 特权模式(按需使用,谨慎启用) -v /dev/kvm:/dev/kvm \ -v /dev/net/tun:/dev/net/tun \ # TUN设备(网络模拟) -v $(pwd)/multi-config:/config \ -v $(pwd)/logs:/var/log/qemu \ # 日志持久化 -p 5900:5900 \ -m 4G \ # 内存限制 --cpus 2 \ # CPU核心限制 qemu/host-device-model:latest \ --device virtio-blk \ # 存储设备 --device virtio-net \ # 网络设备 --device usb \ # USB控制器 --config /config/multi-device.xml \ --accel kvm \ --log-level debug
创建docker-compose.yml:
version: '3.8' services: qemu-device-model: image: qemu/host-device-model:latest container_name: qemu-device-service restart: unless-stopped privileged: false # 最小权限原则,按需开启 devices: - /dev/kvm:/dev/kvm - /dev/net/tun:/dev/net/tun cap_add: - NET_ADMIN - SYS_RAWIO volumes: - ./device-config:/config:ro # 只读挂载配置 - ./persistent-data:/data # 持久化存储 - ./logs:/var/log/qemu:rw # 日志目录 ports: - "5900:5900/tcp" # VNC显示端口 - "2222:22/tcp" # SSH管理端口(可选) environment: - QEMU_ACCEL=kvm # 默认加速类型 - QEMU_LOG_LEVEL=info # 默认日志级别 - QEMU_CONFIG_PATH=/config # 配置文件根目录 command: > --device virtio-blk,virtio-net,usb \ # 多设备列表 --config ${QEMU_CONFIG_PATH}/main.xml \ --accel ${QEMU_ACCEL} \ --log-level ${QEMU_LOG_LEVEL} \ --name device-service-01
启动服务:
docker-compose up -d
net-config.json){ "devices": [ { "type": "virtio-net", "name": "eth0", "mac": "52:54:00:12:34:56", "mtu": 1500, "backend": { "type": "tap", "ifname": "tap0", "script": "/config/tap-up.sh", # 自定义TAP配置脚本 "downscript": "/config/tap-down.sh" }, "features": ["csum", "gso", "guest_tso4"] # 启用的特性 } ] }
multi-device.xml)<device-model> <devices> <device type="virtio-blk" name="sda"> <driver name="qemu" cache="writeback"/> <source file="/data/disk.img" format="qcow2"/> <target dev="vda" bus="virtio"/> </device> <device type="vga" name="video0"> <model type="virtio" heads="1" vram="16384"/> # 16MB显存 <address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x0"/> </device> </devices> </device-model>
| 参数名 | 描述 | 可选值/示例 | 默认值 |
|---|---|---|---|
--device | 模拟设备类型列表(逗号分隔) | virtio-net,virtio-blk,usb | 无(必填) |
--config | 设备配置文件路径 | /config/net-config.json | /etc/qemu/config.json |
--accel | 硬件加速类型 | kvm, tcg(软件模拟) | tcg |
--log-level | 日志输出级别 | debug, info, warn, error | info |
--name | 设备模型实例名称 | emulator-01 | qemu-device-model |
--port | 服务监听端口(VNC/SSH) | 5900 | 5900 |
--max-devices | 最大设备数量限制 | 8, 16 | 10 |
| 环境变量名 | 描述 | 默认值 |
|---|---|---|
QEMU_ACCEL | 默认加速类型 | tcg |
QEMU_LOG_LEVEL | 默认日志级别 | info |
QEMU_CONFIG_PATH | 配置文件根目录 | /etc/qemu |
QEMU_DEVICE_MODEL_LOG | 日志文件路径 | /var/log/qemu/device-model.log |
QEMU_VNC_PASSWORD | VNC访问密码(显示设备) | 空(无密码) |
QEMU_UID | 运行用户ID | 0(root) |
--privileged模式会赋予容器几乎与宿主机相同的权限,仅在开发测试环境使用;生产环境建议通过--cap-add精细添加必要权限(如NET_ADMIN, SYS_RAWIO)/dev/sda)可能导致数据安全风险,请确保配置文件来源可信grep -E 'vmx|svm' /proc/cpuinfo--device /dev/nvme0n1直接挂载NVMe设备--cpuset-cpus参数)features字段中的新特性(如virtio-1.1)--accel tcgvirtio-fs)不可用-m 2G)bridge网络模式(--net=bridge)Q: 容器启动失败并提示Could not access KVM kernel module: No such file or directory?
A: 宿主机未加载KVM模块,执行sudo modprobe kvm(Intel)或sudo modprobe kvm-amd(AMD),并安装qemu-kvm包。
Q: 模拟的网络设备无法获取IP地址?
A: 检查宿主机iptables是否允许容器网络转发,或使用--net=host网络模式(仅测试用),并确保TAP设备配置脚本(tap-up.sh)正确设置IP与路由。
Q: 显示设备无输出(VNC连接黑屏)?
A: 验证显示设备配置是否正确(如vga模型需指定vram),并检查容器日志中是否有vgasrc相关错误,可尝试添加--device vga,model=cirrus使用兼容性更好的Cirrus显卡模型。
Q: 容器CPU占用过高?
A: 未启用KVM加速时(--accel tcg)CPU占用较高,建议在支持KVM的环境运行;或通过--cpus 2 --cpu-shares 512限制CPU资源。

免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429