如果你有一台小主机,只要能安装 Docker,打开 KVM 虚拟化,就能随手安装一台 Windows 操作系统,随用随抛,从 XP 到 Windows 11,再到 arm Windows、macOS,应有尽有。
甚至,你可以用这台 Windows 来给主机刷 BIOS。是的,这大概是小主机里极少数的还需要 Windows 的场景 😂

小主机就是那种尺寸很小、功耗很低的设备,一般用来当旁路由、NAS、影音服务器。基本上不会用来装 Windows,毕竟没啥用啊。
但是,如果你想,那就可以。
先检测 KVM 虚拟化
sudo apt install cpu-checker
sudo kvm-ok
如果在小主机上运行了 kvm-ok 没有出现 not support 字样,那么恭喜你,可以继续了。
Docker 容器内的 Windows
这个项目就叫 Windows,自身大小只有129.7MB,不带系统镜像。但是它会从微软官方下载镜像,非激活版本,无任何版权材料,可放心食用。
(上面这句话的意思是需要用户自行解决激活 Windows 的事情)
然后就是经典的 Docker 命令:
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" --stop-timeout 120 dockurr/windows
(想要后台运行,就把上面的 --rm 换成 -d)
只需要以上一行,就可以打开浏览器访问 http://127.0.0.1:8006/ 查看安装进度了,默认安装 Windows 11 Pro:

整个安装过程将完全自动,最终你会直接看到桌面:

如果你想安装其他操作系统,只需要在上面的命令行,添加 -e VERSION="xp" 就可以了。
以下是支持的操作系统,看到 Windows XP 只有 600MB,真好:
| Value | Version | Size |
|---|---|---|
11 | Windows 11 Pro | 5.4 GB |
11l | Windows 11 LTSC | 4.7 GB |
11e | Windows 11 Enterprise | 5.3 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 | 6.7 GB |
2022 | Windows Server 2022 | 6.0 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 |
docker-compose.yml
下面是拥有参数的 docker-compose.yml 文件,按需删减,然后 docker-composeup -d 运行即可:
services:
windows:
image: dockurr/windows
container_name: windows
environment:
CPU_CORES: "4" #更改CPU核心
RAM_SIZE: "8G" #更改内存大小
VERSION: "11" #更改操作系统
DISK_SIZE: "64" #更改磁盘的大小
USERNAME: "appinn" #配置用户名
PASSWORD: "com" #配置密码
LANGUAGE: "Chinese" #更改系统语言
DHCP: "Y" #自动获取IP地址
# VERSION: "https://example.com/win.iso" #自定义系统镜像(下载)
# MANUAL: "Y" #手动安装
# DISK2_SIZE: "64G" #创建磁盘
# ARGUMENTS: "-device usb-host,vendorid=0x1234,productid=0x1234" #直通USB
devices:
- /dev/kvm
- /dev/net/tun
- /dev/vhost-net #自动获取IP地址
# - /dev/sdb:/disk1 #直通磁盘
# - /dev/bus/usb #直通USB
device_cgroup_rules: #自动获取IP地址
- 'c *:* rwm' #自动获取IP地址
cap_add:
- NET_ADMIN
ports:
- 8006:8006
- 3389:3389/tcp
- 3389:3389/udp
volumes:
- ./windows:/storage #与主机共享文件
# - ./example.iso:/boot.iso #自定义系统镜像(本地)
# - ./example2:/storage2 #创建磁盘
restart: always
stop_grace_period: 2m
使用 RDP 远程控制
可以使用任何 RDP 客户端,比如微软自己的 Windows App 客户端进行连接,默认使用用户名 Docker 和密码 admin 。
甚至,还有 ARM Windows、macOS
但这是另外两个项目了:windows-arm、macos
最后问题来了,你有小主机吗?
原文:https://www.appinn.com/windows-inside-a-docker-container/