dockurr/windows 是一个强大的 Docker 镜像,它允许用户在 Docker 容器内运行完整的 Windows 操作系统。借助 KVM 硬件加速和自动化安装流程,用户可以轻松地部署和使用一个虚拟化的 Windows 环境。

官网:https://github.com/dockur/windows

核心特性 ✨

  • ISO 自动下载: 根据配置自动下载所需的 Windows 安装镜像。
  • KVM 硬件加速: 利用 Linux 内核的 KVM (Kernel-based Virtual Machine) 提供接近原生的虚拟化性能。
  • Web 界面查看器: 提供一个基于 Web 的界面,方便在安装过程中和安装后进行访问和操作。
  • 全自动安装: 从系统安装到基本设置,整个过程无需人工干预。

快速上手与使用方法 🐳

最简单的方式是使用 Docker Compose 或 Docker CLI。

容器启动后安装可能需要一两个小时,logs或者访问ip:8006看安装进度,全程自动安装

1. 通过 Docker Compose:

storage :选择固态硬盘速度更块

services:
  windows:
    image: dockurr/windows
    container_name: windows
    environment:
      VERSION: "11" # 可选:指定 Windows 版本,默认为 11 Pro
      # DISK_SIZE: "128G" # 可选:设置磁盘大小,默认 64G
      # RAM_SIZE: "8G"     # 可选:设置内存大小,默认 4G
      # CPU_CORES: "4"     # 可选:设置 CPU 核心数,默认 2
    devices:
      - /dev/kvm        # 必须:启用 KVM 加速
      - /dev/net/tun    # 可选:某些网络模式需要
    cap_add:
      - NET_ADMIN     # 可选:某些网络模式需要
    ports:
      - 8006:8006      # Web 查看器端口
      - 3389:3389/tcp  # RDP 远程桌面端口 (TCP)
      - 3389:3389/udp  # RDP 远程桌面端口 (UDP)
    volumes:
      - ./windows:/storage # Windows 磁盘文件存储位置
      # - ./mydata:/data   # 可选:共享主机文件夹到 Windows 的 \\host.lan\Data
    restart: always
    stop_grace_period: 2m # 优雅停机时间

2. 通过 Docker CLI:

docker run -it --rm --name windows \
  -p 8006:8006 \
  -p 3389:3389/tcp -p 3389:3389/udp \
  --device=/dev/kvm \
  --device=/dev/net/tun --cap-add NET_ADMIN \
  -v ${PWD:-.}/windows:/storage \
  -e VERSION="11" \ # 可选:指定版本
  --stop-timeout 120 \
  dockurr/windows

基本使用流程:

  1. 启动容器 (使用 docker-compose up -d 或 docker run ...)。
  2. 在浏览器中访问 http://<你的主机IP>:8006
  3. 等待全自动安装完成。你会看到 Windows 的安装过程,最后进入桌面。
  4. 安装完成后,即可通过 Web 查看器或 RDP (推荐) 使用 Windows。

常见配置与问答 (FAQ) 💬

  • 选择 Windows 版本:

    • 通过环境变量 VERSION 指定。可选值包括:11 (Win11 Pro), 10 (Win10 Pro), 11l (Win11 LTSC), 10l (Win10 LTSC), 2022 (Server 2022), xp (XP Pro), 7e (Win7 Ent), 2k (Win2k Pro) 等。
    • 也可以指定一个 ISO 文件的 URL: VERSION: "https://example.com/win.iso"
    • 或者使用本地 ISO 文件:挂载本地 ISO 到容器内的 /custom.iso,如 volumes: - ./my-windows.iso:/custom.iso
  • 更改存储位置和大小:

    • 存储位置:修改 volumes 中的 - ./windows:/storage 映射。
    • 磁盘大小:设置环境变量 DISK_SIZE,如 DISK_SIZE: "256G"。支持在线扩容现有磁盘。
  • 与主机共享文件:

    • 添加卷映射,如 volumes: - ./shared_folder:/data
    • 在 Windows 内部,访问网络邻居中的 host.lan,即可看到 Data 文件夹,对应主机上的 shared_folder
  • 调整 CPU 和内存:

    • 使用环境变量 CPU_CORES 和 RAM_SIZE,如 CPU_CORES: "4"RAM_SIZE: "8G"
  • 自定义用户名和密码:

    • 首次安装前,设置环境变量 USERNAME 和 PASSWORD。默认用户 Docker,密码 admin
  • 选择语言、区域和键盘布局:

    • 首次安装前,设置环境变量 LANGUAGE (如 "French""Chinese"), REGION (如 "zh-CN"), KEYBOARD (如 "zh-CN")。
  • 选择系统版本 (Edition):

    • 对于 Server 版本,可以通过 EDITION: "core" 选择无 GUI 的 Core 版本 (需在首次安装前设置)。
  • 运行安装后脚本:

    • 创建一个包含 install.bat 脚本和所需文件的文件夹 (例如 my_oem_files)。
    • 将该文件夹挂载到容器的 /oemvolumes: - ./my_oem_files:/oem
    • install.bat 会在自动安装的最后阶段执行。
  • 手动安装:

    • 设置环境变量 MANUAL: "Y",将禁用自动安装流程。不推荐,因为自动安装会应用很多优化设置。
  • 使用 RDP 连接:

    • Web 查看器主要用于安装过程,功能有限。
    • 推荐使用标准的 RDP 客户端 (如 Windows 自带的 mstsc,或 FreeRDP) 连接到容器的 IP 地址和端口 3389。默认用户名 Docker,密码 admin
  • 分配独立 IP 地址 (Macvlan):

    • 可以创建 macvlan 网络,让容器获得与主机不同的、在局域网内可路由的 IP 地址。配置略复杂,需根据自身网络环境创建 Docker network 并修改 Compose 文件。
    • 启用 macvlan 后,可进一步设置 DHCP: "Y" (并添加相关设备权限),让 Windows 直接从路由器获取 IP 地址。
  • 添加额外磁盘:

    • 设置环境变量 DISK2_SIZEDISK3_SIZE 等。
    • 同时添加对应的卷映射:volumes: - ./disk2_data:/storage2 - ./disk3_data:/storage3
  • 直通物理磁盘/分区:

    • 使用 devices 映射物理设备,如 devices: - /dev/sda:/disk1 (作为主磁盘,会被格式化) 或 - /dev/sdb1:/disk2 (作为额外磁盘,数据保留)。
  • 直通 USB 设备:

    • 查找设备的 Vendor ID 和 Product ID (用 lsusb)。
    • 设置环境变量 ARGUMENTS: "-device usb-host,vendorid=0xABCD,productid=0x1234"
    • 添加 devices: - /dev/bus/usb
  • KVM 支持验证:

    • 极其重要: 性能依赖 KVM。需要宿主机 CPU 支持并在 BIOS/UEFI 中启用虚拟化技术 (Intel VT-x 或 AMD-V/SVM)。
    • 在 Linux 下可用 sudo kvm-ok 命令检查。
    • 若在虚拟机中运行 Docker,需启用 "嵌套虚拟化"。
    • 某些云服务商可能不允许 KVM。
    • Docker Desktop for Windows/macOS 不支持 KVM 直通,性能会很差。推荐在 Linux 主机上使用 Docker Engine 或 Podman。
  • 合法性:

    • 项目本身只包含开源代码,不分发受版权保护的 Windows 镜像或密钥。安装过程中使用的密钥是微软提供的通用评估密钥。项目符合相关法律。

 

直接安装本地iso,跳过下载(无效)

可以用url,必须iso后缀的url

可以的,按照官方 README,只要把本地 ISO 直接挂载到容器内的 /boot.iso,就完全跳过在线下载:

version: '3.3'
services:
  windows:
    image: dockurr/windows
    container_name: windows
    environment:
      VERSION: "11l"
      RAM_SIZE: "8G"
      CPU_CORES: "4"
      USERNAME: "yys"     # 自定义安装后帐号
      PASSWORD: "123456"   # 自定义密码
      REGION: "zh-CN"         # 区域
      KEYBOARD: "zh-CN"       # 键盘布局
      ARGUMENTS: "-audiodev none,id=noaudio -device ich9-intel-hda -device hda-duplex,audiodev=noaudio" # 虚拟远程声音,rdp有作用

    devices:
      - /dev/kvm
      - /dev/net/tun
    cap_add:
      - NET_ADMIN
    ports:
      - 8006:8006
      - 3389:3389/tcp
      - 3389:3389/udp
    volumes:
      - /mnt/big/share/windows/zh-cn_windows_11_enterprise_ltsc_2024_x64_dvd_cff9cd2d.iso:/boot.iso
      - /mnt/big/share/windows/win11LTSC:/storage
    restart: always
    stop_grace_period: 2m

关键点

  1. 挂载本地 ISO- ./你的镜像.iso:/boot.iso
  2. 无需指定 VERSION:只要 /boot.iso 存在,镜像会优先使用它
  3. 调整资源:用 RAM_SIZECPU_CORESDISK_SIZE 管理内存、CPU、磁盘大小

保存后执行:

docker-compose down
docker-compose up -d

打开 http://<NAS_IP>:8006,直接进入本地 ISO 的安装流程,再也不用忍受慢速下载了。

可以,dockurr/windows 完全支持:

✅ 把系统盘放在固态硬盘(SSD)上
✅ 把软件数据盘挂载在其他硬盘(比如机械盘NVMe 或大容量存储)


🧩 使用多个挂载点 + 多个虚拟硬盘

你可以在 docker-compose.yml 里设置多个挂载点,例如:

 

✅ 例子:系统放 SSD,软件或数据放 HDD

version: Ɖ.3'
services:
  windows:
    image: dockurr/windows
    container_name: windows

    environment:
          # 系统盘大小
      DISK2_SIZE: "128G"        # 第二块盘(软件安装盘)

    volumes:

      - /mnt/bigdisk_win/software:/storage2

完成代码

version: '3.3'
services:
  windows:
    image: dockurr/windows
    container_name: windows
    environment:
      VERSION: "11l"
      RAM_SIZE: "8G"
      DISK_SIZE: "100G"
      DISK2_SIZE: "128G"
      CPU_CORES: "4"
      USERNAME: "yys"     # 自定义安装后帐号
      PASSWORD: "123456"   # 自定义密码
      REGION: "zh-CN"         # 区域
      KEYBOARD: "zh-CN"       # 键盘布局
      ARGUMENTS: "-audiodev none,id=noaudio -device ich9-intel-hda -device hda-duplex,audiodev=noaudio"

    devices:
      - /dev/kvm
      - /dev/net/tun
    cap_add:
      - NET_ADMIN
    ports:
      - 8006:8006
      - 3389:3389/tcp
      - 3389:3389/udp
    volumes:
      - /mnt/big/share/windows/zh-cn_windows_11_enterprise_ltsc_2024_x64_dvd_cff9cd2d.iso:/boot.iso
      - /mnt/sys/share/windows/win11LTSC:/storage
      - /mnt/big/share/windows/software:/storage2

    #restart: always
    stop_grace_period: 2m

 

🔍 在 Windows 内部效果

  • C: 盘 = /storage ⇒ SSD 上的系统盘
  • D: 盘 = /storage2 ⇒ HDD 上挂的软件盘

你在 Windows 中装软件时,只要指定 D 盘即可。

如果硬盘列表没用显示

打开“磁盘管理”工具

  • 方法一:Win + R → 输入 diskmgmt.msc 回车

  • 方法二:右键“开始菜单” → 选择“磁盘管理”


 

 

 

总结

dockurr/windows 提供了一种在 Docker 中便捷、高效地运行 Windows 虚拟环境的方案。其自动化安装、KVM 加速以及灵活的配置选项,使其非常适合开发测试、运行特定 Windows 应用或体验不同 Windows 版本等场景。但务必确保宿主机满足 KVM 要求以获得最佳性能。