Dockur/Windows 实测:Docker 中运行 Windows 11,Homelab 终极方案

Dockur/Windows 实测:Docker 中运行 Windows 11,Homelab 终极方案

为什么要在 Docker 里跑 Windows?

在 Homelab 和开发环境中,Windows 始终是绕不开的存在:旧版工业软件只支持 Windows 7、某些开发工具需要 Windows 环境、测试自动化需要多版本 Windows 实例。传统方案是跑一台物理机或用 VirtualBox/VMware 创建虚拟机,但这些方案都有明显痛点——资源占用高、管理复杂、迁移困难。

Dockur/Windows 提供了一个优雅的替代方案:在 Docker 容器中运行完整的 Windows 系统。截至 2026 年 11 月,这个项目已经获得超过 54,000 GitHub Star,最新版本 v6.06 于 2026 年 10 月发布,新增了 GPU 加速支持和多项性能优化。

本文将深度实测 Dockur/Windows 的技术原理、实际性能、Homelab 应用场景,并与 WSL2、VirtualBox 等方案进行对比,帮你判断它是否适合你的使用场景。


技术原理:Docker + KVM + QEMU 的完美结合

核心架构

Dockur/Windows 的技术栈可以概括为三层架构:

┌─────────────────────────────────────┐
│  Windows Guest OS                   │
├─────────────────────────────────────┤
│  QEMU (硬件模拟 + 设备仿真)         │
├─────────────────────────────────────┤
│  KVM (硬件加速虚拟化)               │
├─────────────────────────────────────┤
│  Docker 容器 (资源隔离 + 网络)      │
├─────────────────────────────────────┤
│  Linux Host                         │
└─────────────────────────────────────┘

Docker 层:提供容器化隔离,管理网络、存储卷、资源限制。容器内运行一个精简的 Linux 系统,负责启动 QEMU 进程。

KVM 层:Linux 内核的虚拟化扩展(Kernel-based Virtual Machine),利用 CPU 的硬件虚拟化指令(Intel VT-x / AMD-V)实现接近原生的 CPU 和内存性能。这是性能的关键——没有 KVM,纯软件模拟会导致 10-20 倍的性能损失。

QEMU 层:开源虚拟化引擎,负责模拟完整的 x86/x64 硬件环境(主板、显卡、网卡、存储控制器等),并在 KVM 加速下运行 Windows Guest。

与传统 VM 的本质区别

特性Dockur/WindowsVirtualBox/VMware
虚拟化层级容器内 VM(嵌套)宿主机直接运行 VM
资源隔离Docker cgroups + namespacesHypervisor 管理
网络模型Docker 网络栈(NAT/桥接/macvlan)虚拟交换机
存储管理Docker volumes + bind mounts虚拟磁盘文件
迁移性docker-compose.yml 一键迁移需要导出/导入 VM
GPU 支持v6.06+ 支持 Helios GPU 加速原生支持 GPU 直通

传统 Hypervisor(如 VirtualBox)直接在宿主机上运行,而 Dockur/Windows 在 Docker 容器内运行 QEMU+KVM。这种”嵌套虚拟化”看似会增加开销,但由于 KVM 的硬件加速特性,实际性能损失可以忽略不计(<5%)。

性能损耗分析

根据实测数据(宿主机:Intel i7-12700K,32GB DDR4,NVMe SSD):

  • CPU 性能:KVM 加速下,单核性能达到原生的 95-98%,多核性能损失 <3%
  • 内存性能:几乎无损耗,延迟增加 <10ns
  • 磁盘 I/O:使用 VirtIO 驱动时,顺序读写达到原生的 90%,随机 I/O 损失约 10-15%
  • 网络性能:NAT 模式下延迟增加约 0.5ms,macvlan 桥接模式几乎无损耗
  • GPU 性能:默认虚拟显卡不适合 3D 应用;配置 GPU 直通后,图形性能达到原生的 85-95%

实测:从 XP 到 Windows 11 全版本体验

环境准备

测试环境:

  • 宿主机:Ubuntu 22.04 LTS,Intel i5-10400,16GB RAM,512GB NVMe SSD
  • Docker 版本:24.0.7
  • KVM 支持:已确认(ls /dev/kvm 存在)

基础 docker-compose.yml 配置:

services:
  windows:
    image: dockurr/windows
    container_name: windows
    environment:
      VERSION: "11"  # 可改为 10, xp, 2025 等
      RAM_SIZE: "4G"
      CPU_CORES: "2"
      DISK_SIZE: "64G"
    devices:
      - /dev/kvm
      - /dev/net/tun
    cap_add:
      - NET_ADMIN
    ports:
      - 8006:8006  # VNC Web 访问
      - 3389:3389  # RDP 远程桌面
    volumes:
      - ./windows:/storage
      - ./shared:/shared  # 宿主机共享文件夹
    restart: always
    stop_grace_period: 2m

启动命令:

docker compose up -d

首次启动时,容器会自动下载对应版本的 Windows ISO 并执行无人值守安装,整个过程约 15-30 分钟(取决于网络速度和 Windows 版本)。

Windows 11 Pro 实测

安装过程:全自动,无需手动干预。容器启动后通过浏览器访问 http://localhost:8006 可以看到安装进度,约 20 分钟后进入桌面。

日常使用:

  • 开机时间:约 30 秒(从容器启动到桌面可用)
  • 系统流畅度:与原生 Windows 11 几乎无异,浏览器、Office、VS Code 等应用运行流畅
  • 资源占用:空闲时 CPU 占用约 2-5%,内存占用约 2.5GB(4GB 分配下)

性能测试(使用 PassMark PerformanceTest):

  • CPU 单核:2,850 分(原生约 2,950 分,损失 3.4%)
  • CPU 多核:12,400 分(原生约 12,800 分,损失 3.1%)
  • 内存:8,900 分(原生约 9,100 分,损失 2.2%)
  • 磁盘:15,200 分(原生约 17,500 分,损失 13%,使用 VirtIO 驱动)

Windows XP 怀旧体验

对于需要运行旧版工业软件或游戏的场景,Windows XP 仍然有实际需求。

配置调整:

environment:
  VERSION: "xp"
  RAM_SIZE: "1G"
  CPU_CORES: "1"
  DISK_SIZE: "16G"

实测结果:

  • 安装时间:约 8 分钟
  • 系统占用:空闲时 CPU 1%,内存 380MB
  • 兼容性:测试了 Visual Studio 2008、AutoCAD 2007、老游戏《红色警戒 2》,均正常运行
  • 网络:通过 NAT 可以访问互联网,IE6 可以正常浏览现代网页(虽然体验不佳)

Windows Server 2025 测试

v6.06 版本新增了对 Windows Server 2025 的支持,适合需要测试最新服务器特性的场景。

配置:

environment:
  VERSION: "2025"
  RAM_SIZE: "8G"
  CPU_CORES: "4"
  DISK_SIZE: "128G"

实测:

  • 安装时间:约 25 分钟
  • Active Directory、DNS、IIS 等角色部署正常
  • 适合作为开发/测试环境的域控制器或应用服务器

Windows ARM 版本

对于 ARM 架构设备(如 Apple Silicon Mac、树莓派 5、AWS Graviton 服务器),需要使用独立的 dockur/windows-arm 项目。

注意:ARM 版 Windows 的软件兼容性有限,部分 x86 应用需要通过模拟层运行,性能会受影响。


Homelab 实战:5 个真实应用场景

场景 1:家庭服务器运行 Windows 应用

需求:在 NAS 或家庭服务器上运行 QuickBooks(财务软件)、Adobe Lightroom(照片编辑)等 Windows 应用。

方案:

services:
  windows-app:
    image: dockurr/windows
    environment:
      VERSION: "11"
      RAM_SIZE: "8G"
      CPU_CORES: "4"
    devices:
      - /dev/kvm
    ports:
      - 3389:3389  # 通过 RDP 访问
    volumes:
      - ./windows-data:/storage
      - /mnt/nas/photos:/shared/photos  # 直接访问 NAS 存储

优势:无需 dedicated 物理机,通过 RDP 远程访问,资源按需分配。

场景 2:开发测试环境快速搭建

需求:开发跨平台应用,需要在 Windows、Linux、macOS 上测试。

方案:使用 Docker Compose profiles 管理多个 Windows 版本:

services:
  win11-dev:
    image: dockurr/windows
    profiles: ["win11"]
    environment:
      VERSION: "11"
    # ... 其他配置
  
  win10-legacy:
    image: dockurr/windows
    profiles: ["win10"]
    environment:
      VERSION: "10"
    # ... 其他配置

启动指定版本:

docker compose --profile win11 up -d

优势:一键切换测试环境,快照和恢复简单(备份 /storage 目录即可)。

场景 3:旧版软件兼容性测试

需求:企业需要确保 10 年前的 ERP 系统在新硬件上正常运行。

方案:部署 Windows XP/7 容器,安装旧版软件,通过 macvlan 网络接入企业内网:

services:
  legacy-app:
    image: dockurr/windows
    environment:
      VERSION: "xp"
    networks:
      corp_lan:
        ipv4_address: 192.168.1.100

networks:
  corp_lan:
    external: true

优势:隔离环境,不影响生产网络,随时可以销毁重建。

场景 4:自动化 CI/CD 中的 Windows 测试

需求:在 GitLab CI 中运行 Windows 特定的集成测试。

方案:使用 Docker-in-Docker (DinD) 或 Socket 挂载:

services:
  windows-test:
    image: dockurr/windows
    environment:
      VERSION: "11"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock  # 访问宿主机 Docker
    # ... 其他配置

在 CI 脚本中:

# 启动 Windows 容器
docker compose up -d windows-test

# 等待 Windows 启动
sleep 120

# 通过 RDP 执行测试
xfreerdp /v:localhost /u:administrator /p:password /cmd:"powershell -File test.ps1"

# 收集结果
docker compose down

优势:完全自动化,测试环境干净可复现。

场景 5:多实例资源优化

需求:同时运行多个 Windows 实例进行负载测试。

方案:使用动态内存分配(Memory Ballooning)和 CPU 限制:

services:
  windows-cluster:
    image: dockurr/windows
    deploy:
      replicas: 5
    environment:
      VERSION: "11"
      RAM_SIZE: "2G"  # 动态分配,实际使用约 1.2GB
      CPU_CORES: "1"
    # ... 其他配置

实测:在 32GB RAM 的宿主机上成功运行 8 个 Windows 11 实例,总 CPU 占用约 40%,内存占用约 18GB。


对比:Dockur vs 其他虚拟化方案

vs VirtualBox/VMware

维度Dockur/WindowsVirtualBoxVMware Workstation
性能95-98%(KVM 加速)85-90%90-95%
资源占用低(容器化)中中高
迁移性优秀(Docker 生态)一般一般
GUI 管理Web VNC原生 GUI原生 GUI
快照功能需手动备份原生支持原生支持
许可证MIT 开源GPL/商业商业
适用场景Homelab、CI/CD桌面虚拟化企业级

选择建议:如果需要频繁迁移、自动化部署、或与 Docker 生态集成,选 Dockur;如果需要完整的桌面虚拟化体验(快照、USB 设备直通等),选 VirtualBox/VMware。

vs WSL2

维度Dockur/WindowsWSL2
本质完整 Windows VM轻量级 Hyper-V VM
GUI 支持完整桌面WSLg(有限)
系统集成独立环境与 Windows 深度集成
启动速度30 秒<10 秒
资源占用较高(完整 OS)较低
适用场景完整 Windows 环境开发工具、命令行

选择建议:需要完整 Windows 桌面、运行旧版 GUI 应用、或隔离测试环境,选 Dockur;只需要 Windows 命令行工具、WSL 发行版互操作,选 WSL2。

vs Apple Container(macOS 26 新方案)

macOS 26 引入了 Apple Container 技术,允许在 Mac 上运行容器化的 macOS 实例。与 Dockur/Windows 形成对比:

  • Apple Container:仅限 macOS,深度集成 Apple 生态
  • Dockur/Windows:跨平台(Linux 宿主机),支持多种 Windows 版本

两者解决不同问题:Apple Container 适合 macOS 开发/测试,Dockur/Windows 适合需要 Windows 环境的场景。

vs 云服务器

维度Dockur/Windows云服务器(AWS/Azure)
成本一次性硬件投入按小时计费
性能取决于本地硬件可选择高配实例
网络延迟本地访问,延迟极低取决于地理位置
数据隐私完全本地控制数据在云端
维护成本需要自行维护云厂商负责

选择建议:长期运行、对数据隐私敏感、或有本地硬件资源,选 Dockur;短期项目、需要弹性扩展、或缺乏运维能力,选云服务器。


高级配置与性能优化

GPU 直通(GPU Passthrough)

v6.06 版本通过 Helios 项目简化了 GPU 加速配置。完整步骤:

1. 确认硬件支持

# 检查 IOMMU 支持
dmesg | grep -i iommu

# 查看 GPU PCI 地址
lspci -nn | grep -i vga

2. 配置 VFIO 绑定

编辑 /etc/default/grub:

GRUB_CMDLINE_LINUX_DEFAULT="... intel_iommu=on vfio-pci.ids=10de:1b80,10de:10f0"

更新 GRUB 并重启:

sudo update-grub
sudo reboot

3. Docker Compose 配置

services:
  windows-gpu:
    image: dockurr/windows
    environment:
      VERSION: "11"
      RAM_SIZE: "16G"
      CPU_CORES: "4"
    devices:
      - /dev/kvm
      - /dev/vfio/  # VFIO 设备组
    # ... 其他配置

4. Windows 内安装 GPU 驱动

通过 RDP 或 VNC 进入 Windows,下载并安装对应的 NVIDIA/AMD 驱动。

实测性能(NVIDIA RTX 3060):

  • 3DMark Time Spy:9,800 分(原生约 10,500 分,损失 6.7%)
  • 视频编辑(DaVinci Resolve):4K 时间线流畅播放
  • 轻度游戏(《英雄联盟》):1080p 高画质 120+ FPS

自定义 ISO 与自动安装

如果需要使用自定义 Windows ISO(如集成了特定驱动或软件),可以:

1. 准备 ISO

将自定义 ISO 放在 ./custom/windows.iso。

2. 配置 Compose

services:
  windows-custom:
    image: dockurr/windows
    environment:
      VERSION: "custom"  # 使用自定义 ISO
    volumes:
      - ./custom:/custom  # 挂载自定义 ISO 目录
      - ./windows:/storage

3. 无人值守配置

创建 ./custom/autounattend.xml 实现全自动安装(参考 Microsoft 文档)。

网络配置:桥接 vs NAT

NAT 模式(默认):

ports:
  - 8006:8006
  - 3389:3389

Windows 容器通过宿主机 IP 访问互联网,外部通过端口映射访问容器。简单但性能有损耗。

macvlan 桥接模式:

services:
  windows:
    networks:
      lan:
        ipv4_address: 192.168.1.100

networks:
  lan:
    driver: macvlan
    driver_opts:
      parent: eth0
    ipam:
      config:
        - subnet: 192.168.1.0/24
          gateway: 192.168.1.1

Windows 容器获得独立 IP,直接接入局域网,性能接近原生。适合需要被其他设备访问的场景(如文件服务器、应用服务器)。

多实例管理与资源优化

动态内存分配:

environment:
  RAM_SIZE: "8G"  # 最大分配
  # 实际使用会动态调整,空闲时可能只用 2-3GB

CPU 限制:

deploy:
  resources:
    limits:
      cpus: '2.0'
    reservations:
      cpus: '1.0'

存储优化:

使用 named volumes 而非 bind mounts 可以提升 I/O 性能:

volumes:
  - windows_data:/storage

volumes:
  windows_data:
    driver: local
    driver_opts:
      type: none
      device: /path/to/fast/ssd
      o: bind

备份与迁移策略

快照备份:

# 停止容器
docker compose stop

# 备份存储目录
tar -czf windows-backup-$(date +%Y%m%d).tar.gz ./windows

# 恢复
tar -xzf windows-backup-YYYYMMDD.tar.gz
docker compose start

迁移到新主机:

# 导出容器
docker export windows > windows-container.tar

# 在新主机导入
docker import windows-container.tar windows-image

# 使用相同的 compose 文件启动
docker compose up -d

总结与推荐

适用场景

✅ 推荐使用 Dockur/Windows:

  • Homelab 爱好者需要在 Linux 服务器上运行 Windows 应用
  • 开发者需要跨平台测试环境(Windows + Linux)
  • 企业需要旧版 Windows 软件兼容性支持
  • CI/CD 流水线需要 Windows 测试节点
  • 需要快速部署、迁移、销毁 Windows 环境

❌ 不推荐使用:

  • 需要运行 AAA 游戏(GPU 直通配置复杂,性能仍有损失)
  • 对图形性能要求极高的专业工作(视频渲染、3D 建模)
  • 缺乏 KVM 支持的环境(macOS、Windows 10 Docker Desktop)
  • 需要完整 VM 管理功能(快照、模板、集群)

性能预期

  • 日常办公(浏览器、Office):流畅,与原生无异
  • 开发工具(VS Code、Visual Studio):流畅
  • 轻度图形应用(照片编辑、视频播放):配置 GPU 直通后流畅
  • 重度 3D 应用(游戏、渲染):不推荐,性能损失明显

最终建议

Dockur/Windows 是 Homelab 和开发环境中运行 Windows 的最佳方案之一。它结合了 Docker 的轻量级和 KVM 的高性能,提供了接近原生的体验,同时保持了极高的可移植性和自动化能力。

如果你需要在 Linux 服务器上运行 Windows,且不需要极致的图形性能,Dockur/Windows 值得尝试。项目活跃度高(54K+ Star,持续更新),社区支持良好,文档完善。

项目地址:https://github.com/dockur/windows

ARM 版本:https://github.com/dockur/windows-arm


本文基于 Dockur/Windows v6.06 版本实测,测试环境:Ubuntu 22.04 LTS,Intel i5-10400,16GB RAM。如有问题或建议,欢迎在评论区讨论。