Docker 容器内的 Windows。
通过 Docker 撰写:
services :
windows :
image : dockurr/windows
container_name : windows
environment :
VERSION : " 11 "
devices :
- /dev/kvm
cap_add :
- NET_ADMIN
ports :
- 8006:8006
- 3389:3389/tcp
- 3389:3389/udp
stop_grace_period : 2m
通过 Docker CLI:
docker run -it --rm -p 8006:8006 --device=/dev/kvm --cap-add NET_ADMIN --stop-timeout 120 dockurr/windows
通过库伯内特斯:
kubectl apply -f kubernetes.yml
很简单!这些是步骤:
启动容器并使用 Web 浏览器连接到端口 8006。
坐下来放松,等待奇迹发生,整个安装过程将全自动进行。
看到桌面后,您的 Windows 安装就可以使用了。
享受你的全新机器,别忘了为这个仓库加注星标!
默认情况下,将安装 Windows 11。但是您可以将VERSION
环境变量添加到您的 compose 文件中,以便指定要下载的替代 Windows 版本:
environment :
VERSION : " 11 "
从以下值中选择:
价值 | 版本 | 尺寸 |
---|---|---|
11 | Windows 11 专业版 | 5.4GB |
11l | Windows 11 长期支持中心 | 4.2GB |
11e | Windows 11 企业版 | 5.8GB |
10 | Windows 10 专业版 | 5.7GB |
10l | Windows 10 长期支持中心 | 4.6GB |
10e | Windows 10 企业版 | 5.2GB |
8 | Windows 8.1 专业版 | 4.0GB |
8e | Windows 8.1 企业版 | 3.7GB |
7e | Windows 7 企业版 | 3.0GB |
ve | Windows Vista 企业版 | 3.0GB |
xp | Windows XP 专业版 | 0.6GB |
2025 | Windows Server 2025 | 5.0GB |
2022 | Windows Server 2022 | 4.7GB |
2019 | Windows 服务器 2019 | 5.3GB |
2016 | Windows 服务器 2016 | 6.5GB |
2012 | Windows 服务器 2012 | 4.3GB |
2008 | Windows Server 2008 | 3.0GB |
2003 | Windows Server 2003 | 0.6GB |
提示
要安装 ARM64 版本的 Windows,请使用 dokur/windows-arm。
要更改存储位置,请在您的撰写文件中包含以下绑定安装:
volumes :
- /var/win:/storage
将示例路径/var/win
替换为所需的存储文件夹。
要扩展 64 GB 的默认大小,请将DISK_SIZE
设置添加到您的撰写文件并将其设置为您的首选容量:
environment :
DISK_SIZE : " 256G "
提示
这也可用于将现有磁盘调整为更大的容量,而不会丢失任何数据。
打开“文件资源管理器”并单击“网络”部分,您将看到一台名为host.lan
的计算机。双击它,它将显示一个名为Data
的文件夹,可以通过 compose 文件将其绑定到主机上的任何文件夹:
volumes :
- /home/user/example:/data
示例文件夹/home/user/example
将作为\host.lanData
提供。
提示
您可以将此路径映射到 Windows 中的驱动器号,以便于访问。
要下载无法从上面列表中选择的不受支持的 ISO 映像,请在VERSION
环境变量中指定该 ISO 的 URL,例如:
environment :
VERSION : " https://example.com/win.iso "
或者,您也可以跳过下载并使用本地文件,通过以下方式将其绑定到您的撰写文件中:
volumes :
- /home/user/example.iso:/custom.iso
将示例路径/home/user/example.iso
替换为所需 ISO 文件的文件名,在这种情况下, VERSION
的值将被忽略。
要在安装后运行您自己的脚本,您可以创建一个名为install.bat
的文件,并将其与所需的任何其他文件(例如要安装的软件)一起放置在一个文件夹中。然后将该文件夹绑定到您的撰写文件中,如下所示:
volumes :
- /home/user/example:/oem
示例文件夹/home/user/example
将在安装过程中复制到C:OEM
,并且包含的install.bat
将在最后一步中执行。
最好坚持自动安装,因为它会调整各种设置以防止在虚拟环境中运行 Windows 时出现常见问题。
但是,如果您坚持手动执行安装,请将以下环境变量添加到您的撰写文件中:
environment :
MANUAL : " Y "
默认情况下,容器最多允许使用 2 个 CPU 核心和 4 GB RAM。
如果您想调整此值,可以使用以下环境变量指定所需的数量:
environment :
RAM_SIZE : " 8G "
CPU_CORES : " 4 "
默认情况下,安装过程中会创建一个名为Docker
的用户,密码为空。
如果您想使用不同的凭据,可以在撰写文件中更改它们:
environment :
USERNAME : " bill "
PASSWORD : " gates "
默认情况下,将下载英文版 Windows。但是您可以将LANGUAGE
环境变量添加到您的撰写文件中,以便指定替代语言:
environment :
LANGUAGE : " French "
您可以选择: ??阿拉伯语,??保加利亚语,??中国人, ??克罗地亚语,??捷克语,??丹麦语,??荷兰语,??英语, ??爱沙尼亚语,??芬兰语,??法语, ??德国人,??希腊语,??希伯来语,??匈牙利语,??意大利语,??日本人, ??韩国人, ??拉脱维亚语,??立陶宛语,??挪威语,??抛光, ??葡萄牙语,??罗马尼亚语,??俄语,??塞尔维亚语,??斯洛伐克语,??斯洛文尼亚语,??西班牙语, ??瑞典语,??泰语,??土耳其语和??乌克兰。
如果您想要使用的键盘布局或区域设置不是所选语言的默认设置,您可以添加带有区域性代码的KEYBOARD
和REGION
变量,如下所示:
environment :
REGION : " en-US "
KEYBOARD : " en-US "
笔记
安装完成后更改这些值将不起作用。在这种情况下,请使用 Windows 内部的控制面板。
网络查看器主要是在安装过程中使用,因为它的图像质量较低,并且没有音频或剪贴板等。
因此,为了获得更好的体验,您可以使用任何 Microsoft 远程桌面客户端连接到容器的 IP,使用用户名Docker
并将密码留空。
Play 商店提供适用于 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
请务必修改这些值以匹配您的本地子网。
创建网络后,将您的撰写文件更改为如下所示:
services :
windows :
container_name : windows
....
networks :
vlan :
ipv4_address : 192.168.0.100
networks :
vlan :
external : true
这种方法的另一个好处是您不必再执行任何端口映射,因为默认情况下所有端口都会公开。
重要的
由于 macvlan 的设计,Docker 主机无法访问此 IP 地址,这不允许两者之间进行通信。如果这是一个问题,您需要创建第二个 macvlan 作为解决方法。
为 macvlan 配置容器后,Windows 可以通过向路由器请求 IP 来成为家庭网络的一部分,就像真正的 PC 一样。
要启用此模式,请将以下行添加到您的撰写文件中:
environment :
DHCP : " Y "
devices :
- /dev/vhost-net
device_cgroup_rules :
- ' c *:* rwm '
笔记
在这种模式下,容器和Windows将各自拥有自己独立的IP。
要创建其他磁盘,请像这样修改您的撰写文件:
environment :
DISK2_SIZE : " 32G "
DISK3_SIZE : " 64G "
volumes :
- /home/example:/storage2
- /mnt/data/example:/storage3
通过将磁盘设备添加到您的撰写文件中,可以直接传递磁盘设备:
devices :
- /dev/sdb:/disk1
- /dev/sdc:/disk2
如果您希望它成为主驱动器(将在安装过程中格式化),请使用/disk1
,并使用/disk2
和更高版本将它们添加为辅助驱动器(将保持不变)。
要传递 USB 设备,首先通过lsusb
命令查找其供应商和产品 ID,然后将它们添加到您的 compose 文件中,如下所示:
environment :
ARGUMENTS : " -device usb-host,vendorid=0x1234,productid=0x1234 "
devices :
- /dev/bus/usb
重要的
如果设备是U盘,请等待安装完成后再连接。否则安装可能会失败,因为磁盘的顺序可能会重新排列。
只有 Linux 和 Windows 11 支持 KVM 虚拟化,不幸的是 macOS 和 Windows 10 不支持。
您可以在Linux中运行以下命令来检查您的系统:
sudo apt install cpu-checker
sudo kvm-ok
如果您收到kvm-ok
错误提示 KVM 无法使用,请检查是否:
BIOS 中启用了虚拟化扩展( Intel VT-x
或AMD SVM
)。
如果您在虚拟机内运行容器,则启用了“嵌套虚拟化”。
您没有使用云提供商,因为他们中的大多数不允许其 VPS 进行嵌套虚拟化。
如果您没有收到kvm-ok
的任何错误,但容器仍然抱怨 KVM,请检查是否:
您没有使用“Docker Desktop for Linux”,因为它不支持 KVM,而是直接使用 Docker Engine。
它可以帮助将privileged: true
添加到您的撰写文件中(或将sudo
添加到您的docker run
命令),以排除任何权限问题。
您可以使用 dokur/macos 来实现。除了自动安装之外,它具有许多相同的功能。
是的,该项目仅包含开源代码,不分发任何受版权保护的材料。代码中找到的任何产品密钥都只是 Microsoft 出于试用目的提供的通用占位符。因此,根据所有适用的法律,该项目将被视为合法。
本项目中提及的产品名称、徽标、品牌和其他商标均为其各自商标所有者的财产。此项目不隶属于 Microsoft Corporation,也不受 Microsoft Corporation 赞助或认可。