vastai/kvm本镜像为KVM(基于内核的虚拟机)提供容器化部署方案,旨在简化KVM虚拟化环境的搭建与管理。通过Docker容器封装KVM相关组件,实现轻量级、隔离化的KVM虚拟化服务运行,支持在容器中部署KVM虚拟机或运行KVM管理工具。
qemu-kvm, libvirt-daemon, bridge-utilssystemctl start libvirtdkvm和libvirt用户组,获取设备访问权限:usermod -aG kvm,libvirt $USERbashdocker run -d \ --name kvm-container \ --privileged \ --device /dev/kvm \ --device /dev/net/tun \ -v /var/lib/libvirt:/var/lib/libvirt \ -v /etc/libvirt:/etc/libvirt \ -p ***:*** \ # libvirt远程管理端口 kvm-image:latest
yamlversion: '3' services: kvm-service: image: kvm-image:latest container_name: kvm-container privileged: true devices: - /dev/kvm:/dev/kvm - /dev/net/tun:/dev/net/tun volumes: - /var/lib/libvirt:/var/lib/libvirt # 持久化KVM虚拟机数据 - /etc/libvirt:/etc/libvirt # 挂载libvirt配置 - ./kvm-data:/data # 自定义数据目录 ports: - "***:***" # libvirt远程管理端口 environment: - KVM_MEMORY=2048 # 默认虚拟机内存大小(MB) - KVM_CPUS=2 # 默认虚拟机CPU核心数 restart: unless-stopped
| 设备路径 | 说明 | 必要性 |
|---|---|---|
/dev/kvm | KVM设备文件,提供硬件虚拟化支持 | 必需 |
/dev/net/tun | 网络隧道设备,支持虚拟机网络功能 | 必需 |
| 环境变量 | 说明 | 默认值 |
|---|---|---|
KVM_MEMORY | 为虚拟机分配的默认内存大小(MB) | 2048 |
KVM_CPUS | 为虚拟机分配的默认CPU核心数 | 2 |
LIBVIRT_DEBUG | 是否开启libvirt调试模式("true"/"false") | "false" |
| 宿主机路径 | 容器路径 | 说明 |
|---|---|---|
/var/lib/libvirt | /var/lib/libvirt | 持久化KVM虚拟机镜像和存储数据 |
/etc/libvirt | /etc/libvirt | 持久化libvirt配置文件 |
| 自定义路径 | /data | 用户自定义数据目录,用于存放虚拟机ISO或配置 |
| 宿主机端口 | 容器端口 | 说明 |
|---|---|---|
| *** | *** | libvirt远程管理端口(TCP) |
| 5900+ | 5900+ | VNC控制台端口(按需映射,每个虚拟机一个端口) |
bash# 检查容器运行状态 docker ps | grep kvm-container # 进入容器验证KVM功能 docker exec -it kvm-container bash virsh list --all # 查看虚拟机列表
问题:容器启动失败,提示/dev/kvm: no such file or directory
解决:确认宿主机已开启硬件虚拟化,安装qemu-kvm并验证/dev/kvm存在:ls -l /dev/kvm
问题:虚拟机无法联网
解决:确保宿主机/dev/net/tun设备已挂载,检查libvirt网络配置:virsh net-list --all,确保默认网络处于活跃状态
问题:权限不足
解决:将宿主机用户添加到kvm和libvirt组,并重启Docker服务:systemctl restart docker
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务