搭建SPICE云桌面:Docker QEMU-KVM SPICE Windows10云桌面
从容器中启动
开始构建云桌面,启动基础docker容器
1
docker run -dit --privileged --name NikoVDI -p 8288:5900 -p 8289:5901 -p 8888:5988 -p 8889:5989 -v ~/:/metaworld peacedocker10/nikodocker-vncxfce:1.0 /bin/bash
这是一个已经构建好的,直接使用的。
1
docker run -dit --privileged --name PeaceMakerVDI -p 18888:5900 -p 18889:5901 -v ~/:/metaworld peacedocker10/nikovdi-spicewin10:1.0 /bin/bash
8288 给vnc;8888和8889给SPICE和SPICE+TLS
spice连接方式: spice://hostaddr:18888
第一part: 准备docker、kvm和qemu
docker内容器安装kvm、virt-manager
1
apt-get install qemu-kvm libvirt-bin virt-manager bridge-utils qemu qemu-kvm libvirt-clients libvirt-daemon-system bridge-utils virt-manager
kvm-ok指令验证kvm已经启动,否则执行modprobe kvm
执行这个命令重启libvirt和virtlogd
1
2sudo systemctl enable --now libvirtd
sudo systemctl enable --now libvirtd
在docker容器内通常会失败,如下。解决方法也在下列。
1 | root@5d7cd0495ce9:/# systemctl enable --now libvirtd |
解决:
1 | root@5d7cd0495ce9:/# /etc/init.d/libvirtd restart |
restart失败时请尝试直接start
- 安装kvm后,确认系统内已经有了virt-manager这个应用,打开这个应用,如果报错,则重启系统使qemu能够与kvm正常工作。(如果你是docker容器,这意味着你需要重启这个docker容器而没有必要重启整个系统)
如果哪里出错,或在未来某个时刻发现异常,你可以回到这里,尝试命令内核安装kvm模块:
1 | sudo modprobe kvm |
到这里,virt-manager应该工作正常并且不会再有任何抱怨。此时它会向您展示如下界面。
第二part:安装Windows10客户机
接下来通过windows iso安装虚拟机。过程就像VMWare Station一样,相关步骤常规且简单。
请自己准备版本符合需求的Windows安装镜像。密钥可见本文末尾参考。
创建虚拟机,注意自定义配置
磁盘选择Virtio
配置SPICE
建议选择为AUTO,可以不用像下图一样指定端口
可以考虑配置VNC。但是强烈建议仅使用SPICE即可。
网卡配置为Virtio
Windows需要Virtio的驱动,本文末尾提供下载地址,通过虚拟机的CR-ROM磁盘装入
配置启动顺序,保证Windows安装镜像位于第一位,QEMU磁盘镜像位于第二位
配置CPU,使用宿主机CPU配置;设置核心与线程
务必选择自定义安装,否则因为驱动问题看不到磁盘
从上述virtio的CD-ROM所在盘加载驱动
操作正确则如下图,选择磁盘开始安装
成功进入系统,目前没有为网卡安装驱动
进入设备管理器,为每个设备安装驱动。这些设备的驱动都是我们上面配置的使用virtio驱动。我们用同样的方式在插入的virtio镜像中搜索并安装驱动
成功安装驱动如下
第三part:SPICE
- windows作为Guest os需要安装SPICE相关工具,才能正确运行SPICE服务
下载软件(本文末尾参考提供地址),为Windows安装该工具(FAQ第三点有简单描述) - 完成安装后,打开SPICE客户端软件(如remote view),连接到SPICE即可看到云桌面画面!
FAQ
- process exited while connecting to monitor (QEMU无法启动虚拟机时)
1
2
3
4
5
6Dadding the following:
user = "root"
group = "root"
to the /etc/libvirt/qemu.conf file. Be sure to include the quotes.
然后
1 | sudo usermod -a -G kvm username |
执行完该步骤后,可能需要重新打开virt-manager;如果还不正常,通过上文讲的重启libvirt的指令再次尝试。如果还不正常,重启docker容器。以上步骤重复执行。
qemu设置不支持TLS:暂时关闭TLS
![](https://cdn.jsdelivr.net/gh/NasdaqGodzilla/PeacePicture/img/NikoVDI:如果qemu报错不支持SPICE TLS那么先暂时关闭.jpg)为windows安装spice guest tools
- 可以在guest windows内上网下载该软件(地址见本文末尾参考)
- 可以通过共享方式将提前下载的软件共享到windows进行安装。如,我的做法是,通过docker将物理机下载的软件共享到docker,在docker通过python启动简易http服务器,在qemu guest windows中打开服务器下载。
参考
- install windows 1- on ubuntu kvm
- 下载Windows10 virtio驱动
- 下载Spice Guest tools
- Ubuntu 14.04 KVM - error: internal error: process exited while connecting to monitor: qemu-system-x86_64:
- win10企业版(政府版)400年期限密钥
1
2
3
4【EnterpriseG】FV469-WGNG4-YQP66-2B2HY-KD8YX
【EnterpriseGN】FW7NV-4T673-HF4VX-9X4MM-B4H4T
【gvlkEnterpriseG】YYVX9-NTFWV-6MDM3-9PT4T-4M68B
【gvlkEnterpriseGN】44RPN-FTY23-9VTTB-MP9BX-T84FV - Windows 10 Pro(win10专业版激活密钥)
1
2
3
4
5
6
7
8
9
10
11
12TPYNC-4J6KF-4B4GP-2HD89-7XMP6
2BXNW-6CGWX-9BXPV-YJ996-GMT6T
NRTT2-86GJM-T969G-8BCBH-BDWXG
XC88X-9N9QX-CDRVP-4XV22-RVV26
TNM78-FJKXR-P26YV-GP8MB-JK8XG
TR8NX-K7KPD-YTRW3-XTHKX-KQBP6
VK7JG-NPHTM-C97JM-9MPGT-3V66T
NPPR9-FWDCX-D2C8J-H872K-2YT43
W269N-WFGWX-YVC9B-4J6C9-T83GX
NYW94-47Q7H-7X9TT-W7TXD-JTYPM
NJ4MX-VQQ7Q-FP3DB-VDGHX-7XM87
MH37W-N47XK-V7XM9-C7227-GCQG9