dockur/windows 项目入门与原理介绍
项目概述
dockur/windows 是一个开源项目,它允许用户在 Docker 容器中运行完整的 Windows 操作系统(从 Windows XP 到 Windows 11 及 Server 版本)。该项目通过结合 QEMU、KVM 和 noVNC 技术,实现了 Windows 系统的轻量化容器化部署。
项目地址
https://github.com/dockur/windows
核心特性
- 多版本支持:支持 Windows XP/7/8/10/11 及 Server 版本
- 硬件加速:利用 KVM 虚拟化技术提供接近原生性能
- Web 访问:内置 noVNC 支持通过浏览器访问 Windows 桌面
- 自动安装:可自动从微软服务器下载所需 Windows 版本
- 资源定制:可配置 CPU 核心数、内存大小和磁盘空间
技术原理
- 虚拟化层:使用 QEMU 模拟硬件环境,配合 KVM 加速
- 容器集成:将 QEMU 虚拟机封装在 Docker 容器中管理
- 远程访问:
- noVNC 提供基于浏览器的图形界面(端口8006)
- RDP(端口3389)支持更高效的远程桌面连接
- 自动化部署:通过预设的应答文件实现无人值守安装
快速入门
基础部署命令
1、使用KVM方式的配置,docker-compose.yml
services:
windows:
privileged: true
image: dockurr/windows
container_name: windows
environment:
VERSION: "xp"
DISK_SIZE: "10G"
USERNAME: "bill"
PASSWORD: "gates"
RAM_SIZE: "3G"
CPU_CORES: "2"
devices:
- /dev/kvm
- /dev/net/tun
cap_add:
- NET_ADMIN
ports:
- 8006:8006
- 3389:3389/tcp
- 3389:3389/udp
volumes:
- ./windows:/storage
restart: always
stop_grace_period: 2m
2、不使用kvm的方式,docker-compose.yml
services:
windows:
privileged: true
image: dockurr/windows
container_name: windows
environment:
VERSION: "xp"
DISK_SIZE: "10G"
USERNAME: "bill"
PASSWORD: "gates"
RAM_SIZE: "3G"
CPU_CORES: "2"
# 将kvm设置为N,这个是从日志中看到的
KVM: "N"
devices:
#- /dev/kvm
- /dev/net/tun
cap_add:
- NET_ADMIN
ports:
- 8006:8006
- 3389:3389/tcp
- 3389:3389/udp
volumes:
- ./windows:/storage
restart: always
stop_grace_period: 2m
性能考虑
- 使用KVM:获得更快的执行速度和更低的资源消耗。
- 不使用KVM:性能下降明显,但依然可以在不支持KVM的环境中运行。
FAQ
1. 如何检查环境是否支持KVM
cat /proc/cpuinfo | egrep 'vmx|svm'
# 如果输出中包含svm或vmx,表示CPU支持虚拟化。
lsmod | grep kvm
# 如果有信息显示说明kvm被加载
# 查看是否有目录 /dev/kvm
2. vmware虚拟机上如何启用kvm
虚拟机设置时需要给CPU开启虚拟化选项,选择:虚拟化启用intel vt…
结语
dockur/windows项目为开发者和用户提供了一种在Docker中运行Windows系统的简便方法,适用于测试、开发或运行特定的Windows应用程序。