把Windows系统装进Docker里进行远程桌面
项目介绍
在Docker容器中安装Windows系统。
安装Docker
curl -sSL https://get.docker.com/ | sh
检查CPU是否支持虚拟化技术
在CentOS 7上检查是否支持KVM的方法是通过检查CPU是否支持硬件虚拟化,以及是否已经加载了KVM内核模块。
egrep -c '(vmx|svm)' /proc/cpuinfo
如果输出大于0,则表示CPU支持Intel VT-x或AMD-V,这是硬件虚拟化的基础。
检查KVM内核模块是否已加载:
lsmod | grep kvm
如果已经加载,你会看到kvm_intel(对于Intel CPU)或kvm_amd(对于AMD CPU)。
如果上述命令没有输出,或者lsmod命令的输出中没有显示这些模块,你可以尝试手动加载它们:
sudo modprobe kvm
sudo modprobe kvm_intel # 对于Intel CPU
# 或者
sudo modprobe kvm_amd # 对于AMD CPU
如果你想要这些模块在系统启动时自动加载,你可以将它们添加到/etc/modules文件中:
echo "kvm" | sudo tee -a /etc/modules
echo "kvm_intel" | sudo tee -a /etc/modules # 对于Intel CPU
# 或者
echo "kvm_amd" | sudo tee -a /etc/modules # 对于AMD CPU
以上步骤可以帮助你确认CentOS 7是否支持KVM以及是否已经正确配置了KVM环境。
下载Windows Docker镜像
下载镜像
docker pull dockurr/windows
你也可以本地构建
git clone https://github.com/dockur/windows.git
cd windows
docker build -t dockurr/windows .
几项技术
•qemus/qemu-docker[7],在容器中使用 QEMU,能够提供接近本机速度的虚拟机的网络、IO 速度等。
•christgau/wsdd[8],让容器中的 Windows 能够出现在局域网中的其他设备的共享设备中。(Windows 10 的 1511 版本后,默认开始禁用 SMBv1,NetBIOS 设备发现功能失效,导致其他设备不能对其进行服务发现)。
•qemus/virtiso[9],精简到 27MB 的 KVM/QEMU Virtio 驱动程序,能够让 Windows 在 Docker 环境中正常使用。
•krallin/tini[10],正确启动 Docker 中 QEMU,以及确保进程异常能够被正确处理,或正确的终止容器进程。
部署安装
docker-compose.yml
version: "3"
services:
windows:
image: dockurr/windows
container_name: windows
devices:
- /dev/kvm
cap_add:
- NET_ADMIN
ports:
- 8006:8006
- 3389:3389/tcp
- 3389:3389/udp
stop_grace_period: 2m
restart: on-failure
创建windows
docker-compose up -d