Docker 容器内运行的 Windows。
services:
windows:
image: dockurr/windows
container_name: windows
environment:
VERSION: "11"
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
docker run -it --rm --name windows -p 8006:8006 --device=/dev/kvm --device=/dev/net/tun --cap-add NET_ADMIN -v "${PWD:-.}/windows:/storage" --stop-timeout 120 dockurr/windows
kubectl apply -f https://raw.githubusercontent.com/dockur/windows/refs/heads/master/kubernetes.yml
非常简单!步骤如下:
启动容器并使用 Web 浏览器连接到 8006 端口。
静待奇迹发生,整个安装过程将完全自动完成。
看到桌面后,您的 Windows 安装即可使用。
享受您的新机器吧,别忘了为这个仓库点赞!
默认情况下,系统会安装 Windows 11 Pro。但您可以将 VERSION
环境变量添加到 Compose 文件,以指定要下载的其他 Windows 版本:
environment:
VERSION: "11"
Select from the values below:
Value | Version | Size |
---|---|---|
11 |
Windows 11 Pro | 5.4 GB |
11l |
Windows 11 LTSC | 4.7 GB |
11e |
Windows 11 Enterprise | 4.0 GB |
10 |
Windows 10 Pro | 5.7 GB |
10l |
Windows 10 LTSC | 4.6 GB |
10e |
Windows 10 Enterprise | 5.2 GB |
8e |
Windows 8.1 Enterprise | 3.7 GB |
7u |
Windows 7 Ultimate | 3.1 GB |
vu |
Windows Vista Ultimate | 3.0 GB |
xp |
Windows XP Professional | 0.6 GB |
2k |
Windows 2000 Professional | 0.4 GB |
2025 |
Windows Server 2025 | 5.6 GB |
2022 |
Windows Server 2022 | 4.7 GB |
2019 |
Windows Server 2019 | 5.3 GB |
2016 |
Windows Server 2016 | 6.5 GB |
2012 |
Windows Server 2012 | 4.3 GB |
2008 |
Windows Server 2008 | 3.0 GB |
2003 |
Windows Server 2003 | 0.6 GB |
要安装 ARM64 版本的 Windows,请使用 dockur/windows-arm。
要更改存储位置,请在 Compose 文件中添加以下绑定挂载:
volumes:
- ./windows:/storage
将示例路径“./windows”替换为所需的存储文件夹或命名卷。
要扩展默认的 64 GB 大小,请在 Compose 文件中添加“DISK_SIZE”设置,并将其设置为您所需的容量:
environment:
DISK_SIZE: "256G"
这也可以用来将现有磁盘调整到更大的容量,而不会丢失任何数据。
打开“文件资源管理器”,点击“网络”部分,您将看到一个名为“host.lan”的计算机。
双击它,它将显示一个名为“Data”的文件夹,您可以通过 Compose 文件将其绑定到主机上的任何文件夹:
volumes:
- ./example:/data
示例文件夹 ./example
将以 \\host.lan\Data
的形式提供。
您可以将此路径映射到 Windows 中的驱动器号,以便于访问。
默认情况下,容器最多可以使用 2 个 CPU 核心和 4 GB RAM。
如果您想调整此设置,可以使用以下环境变量指定所需的大小:
environment:
RAM_SIZE: "8G"
CPU_CORES: "4"
默认情况下,安装过程中会创建一个名为“Docker”的用户,其密码为“admin”。
如果您想使用不同的凭据,可以在 Compose 文件中进行配置(仅在安装前进行):
environment:
USERNAME: "bill"
PASSWORD: "gates"
默认情况下,系统会下载英文版 Windows。
但在安装之前,您可以将 LANGUAGE
环境变量添加到 Compose 文件中,以指定其他语言:
environment:
LANGUAGE: "French"
您可以选择:🇦🇪阿拉伯语、🇧🇬保加利亚语、🇨🇳中文、🇭🇷克罗地亚语、🇨🇿捷克语、🇩🇰丹麦语、🇳🇱荷兰语、🇬🇧英语、🇪🇪爱沙尼亚语、🇫🇮芬兰语、🇫🇷法语、🇩🇪德语、🇬🇷希腊语、🇮🇱希伯来语、🇭🇺匈牙利语、🇮🇹意大利语、🇯🇵日语、🇰🇷韩语、🇱🇻拉脱维亚语、🇱🇹立陶宛语, 🇳🇴 挪威语、🇵🇱 波兰语、🇵🇹 葡萄牙语、🇷🇴 罗马尼亚语、🇷🇺 俄语、🇷🇸 塞尔维亚语、🇸🇰 斯洛伐克语、🇸🇮 斯洛文尼亚语、🇪🇸 西班牙语、🇸🇪 瑞典语、🇹🇭 泰语、🇹🇷 土耳其语和 🇺🇦 乌克兰语。
如果您想使用非所选语言默认的键盘布局或语言环境,您可以像这样添加 KEYBOARD
和 REGION
变量(安装前):
environment:
REGION: "en-US"
KEYBOARD: "en-US"
Windows Server 提供了一个极简的 Core 版本,没有 GUI。要选择非标准版本,您可以在安装前添加一个 EDITION
变量,如下所示:
environment:
EDITION: "core"
要下载不受支持的 ISO 镜像,请在 VERSION
环境变量中指定其 URL:
environment:
VERSION: "https://example.com/win.iso"
或者,您也可以跳过下载过程,改用本地文件,方法是将其绑定到您的 Compose 文件中,如下所示:
volumes:
- ./example.iso:/boot.iso
将示例路径 ./example.iso
替换为您所需的 ISO 文件的文件名。在这种情况下,VERSION
的值将被忽略。
要在安装后运行您自己的脚本,您可以创建一个名为 install.bat
的文件,并将其与所需的任何其他文件(例如,要安装的软件)一起放在一个文件夹中。
然后在您的 Compose 文件中绑定该文件夹,如下所示:
volumes:
- ./example:/oem
示例文件夹 ./example
将被复制到 C:\OEM
,其中包含的 install.bat
将在自动安装的最后一步执行。
建议坚持使用自动安装,因为它会调整各种设置,以防止在虚拟环境中运行 Windows 时出现常见问题。
但是,如果您坚持手动安装并自行承担风险,请在 Compose 文件中添加以下环境变量:
environment:
MANUAL: "Y"
Web 查看器主要用于安装期间,因为它的图像质量较低,并且没有音频或剪贴板等功能。
为了获得更好的体验,您可以使用任何 Microsoft 远程桌面客户端连接到容器的 IP,用户名为“Docker”,密码为“admin”。
Play Store 提供适用于 Android 的 RDP 客户端,Apple Store 提供适用于 iOS 的 RDP 客户端。对于 Linux,您可以使用 FreeRDP,对于 Windows,只需在搜索框中输入“mstsc”即可。
默认情况下,容器使用桥接网络,与主机共享 IP 地址。
如果您想为容器分配单独的 IP 地址,可以按如下方式创建 macvlan 网络:
docker network create -d macvlan \
--subnet=192.168.0.0/24 \
--gateway=192.168.0.1 \
--ip-range=192.168.0.100/28 \
-o parent=eth0 vlan
请务必修改这些值以匹配您的本地子网。
创建网络后,请将 Compose 文件更改为如下所示:
services:
windows:
container_name: windows
..<snip>..
networks:
vlan:
ipv4_address: 192.168.0.100
networks:
vlan:
external: true
这种方法的另一个好处是,您无需再执行任何端口映射,因为所有端口都会默认公开。
由于 macvlan 的设计不允许 Docker 主机与主机之间通信,因此无法从 Docker 主机访问此 IP 地址。如果您担心这个问题,可以创建第二个 macvlan 作为替代方案。
为容器配置 macvlan 后,Windows 可以通过向路由器请求 IP 地址成为您家庭网络的一部分,就像一台真正的 PC 一样。
要启用此模式,容器和 Windows 将拥有单独的 IP 地址,请在 Compose 文件中添加以下行:
environment:
DHCP: "Y"
devices:
- /dev/vhost-net
device_cgroup_rules:
- 'c *:* rwm'
要创建更多磁盘,请按如下方式修改 Compose 文件:
environment:
DISK2_SIZE: "32G"
DISK3_SIZE: "64G"
volumes:
- ./example2:/storage2
- ./example3:/storage3
可以通过将磁盘设备或分区添加到 Compose 文件来直接直通磁盘:
devices:
- /dev/sdb:/disk1
- /dev/sdc1:/disk2
如果您希望将 /disk1
用作主驱动器(安装过程中会进行格式化),请使用 /disk2
及更高版本将其添加为辅助驱动器(安装过程中不会进行任何改动)。
要透传 USB 设备,首先使用 lsusb
命令查找其供应商和产品 ID,然后将它们添加到您的 Compose 文件中,如下所示:
environment:
ARGUMENTS: "-device usb-host,vendorid=0x1234,productid=0x1234"
devices:
- /dev/bus/usb
如果设备是 USB 磁盘驱动器,请等到安装完全完成后再连接。否则,安装可能会失败,因为磁盘的顺序可能会被重新排列。
首先使用以下图表检查您的软件是否兼容:
Product | Linux | Win11 | Win10 | macOS |
---|---|---|---|---|
Docker CLI | ✅ | ✅ | ❌ | ❌ |
Docker Desktop | ❌ | ✅ | ❌ | ❌ |
Podman CLI | ✅ | ✅ | ❌ | ❌ |
Podman Desktop | ✅ | ✅ | ❌ | ❌ |
之后,您可以在 Linux 中运行以下命令来检查您的系统:
sudo apt install cpu-checker
sudo kvm-ok
如果您收到来自 kvm-ok
的错误,指示无法使用 KVM,请检查:
您的 BIOS 中是否启用了虚拟化扩展(“Intel VT-x” 或 “AMD SVM”)。
如果您在虚拟机中运行容器,则是否启用了“嵌套虚拟化”。
您没有使用云服务提供商,因为大多数云服务提供商不允许其 VPS 使用嵌套虚拟化。
如果您没有收到来自 kvm-ok
的任何错误,但容器仍然提示缺少 KVM 设备,则建议您在 Compose 文件中添加 privileged: true
(或在 docker
命令中添加 sudo
),以排除任何权限问题。
您可以使用 dockur/macos 来实现。除了自动安装之外,它与 macos 有很多相同的功能。
在这种情况下,您可以使用 qemus/qemu。
是的,该项目仅包含开源代码,不分发任何受版权保护的材料。代码中发现的任何产品密钥都只是 Microsoft 为试用目的提供的通用占位符。因此,根据所有适用法律,该项目均视为合法。