在 Docker 中运行 Windows:dockurr/windows 镜像详解
dockurr/windows
是一个强大的 Docker 镜像,它允许用户在 Docker 容器内运行完整的 Windows 操作系统。借助 KVM 硬件加速和自动化安装流程,用户可以轻松地部署和使用一个虚拟化的 Windows 环境。
核心特性 ✨
- ISO 自动下载: 根据配置自动下载所需的 Windows 安装镜像。
- KVM 硬件加速: 利用 Linux 内核的 KVM (Kernel-based Virtual Machine) 提供接近原生的虚拟化性能。
- Web 界面查看器: 提供一个基于 Web 的界面,方便在安装过程中和安装后进行访问和操作。
- 全自动安装: 从系统安装到基本设置,整个过程无需人工干预。
快速上手与使用方法 🐳
最简单的方式是使用 Docker Compose 或 Docker CLI。
容器启动后安装可能需要一两个小时,logs或者访问ip:8006看安装进度,全程自动安装
1. 通过 Docker Compose:
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
基本使用流程:
- 启动容器 (使用
docker-compose up -d
或docker run ...
)。 - 在浏览器中访问
http://<你的主机IP>:8006
。 - 等待全自动安装完成。你会看到 Windows 的安装过程,最后进入桌面。
- 安装完成后,即可通过 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 版本 (需在首次安装前设置)。
- 对于 Server 版本,可以通过
-
运行安装后脚本:
- 创建一个包含
install.bat
脚本和所需文件的文件夹 (例如my_oem_files
)。 - 将该文件夹挂载到容器的
/oem
:volumes: - ./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_SIZE
,DISK3_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
。
- 查找设备的 Vendor ID 和 Product ID (用
-
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 镜像或密钥。安装过程中使用的密钥是微软提供的通用评估密钥。项目符合相关法律。
总结
dockurr/windows
提供了一种在 Docker 中便捷、高效地运行 Windows 虚拟环境的方案。其自动化安装、KVM 加速以及灵活的配置选项,使其非常适合开发测试、运行特定 Windows 应用或体验不同 Windows 版本等场景。但务必确保宿主机满足 KVM 要求以获得最佳性能。
本文作者: 永生
本文链接: https://yys.zone/detail/?id=398
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
发表评论
评论列表 (0 条评论)
暂无评论,快来抢沙发吧!