dockur/windows 是一个可以在 Docker 中运行从 Windows 7 到 Windows 10、11 系统的开源项目,然后通过浏览器访问这台套娃 Windows 系统。需要大内存、KVM 支持。@Appinn

万物皆可 Docker
三大操作系统:Windows、macOS、Linux。用 Docker 运行 Linux 是它的老本行,大多数 Docker 镜像都基于 Linux。
在 Docker 运行 macOS 也不是不行,比如:https://meta.appinn.net/t/topic/47790
现在,在 Docker 运行 Windows 也来了。
dockur/windows
dockur/windows 项目运行起来非常简单,一句话:
1 |
|
默认情况下,会安装 Windows 11,并且会分配 2 个 CPU 核心和 4 GB 内存,以及 64GB 硬盘大小。
docker run -it --rm -p 8006:8006 --device=/dev/kvm --cap-add NET_ADMIN --stop-timeout 120 dockurr/windows:win10
如果你要安装其他系统,只需要在命令中添加 -e win10
即可:
win11
= Windows 11win10
= Windows 10win81
= Windows 8.1win22
= Windows Server 2022win19
= Windows Server 2019win16
= Windows Server 2016tiny11
= Tiny 11 (下载很慢)win7
= Windows 7 (下载也很慢)
上述系统,下载很慢的来自 Archive 网站,其他的从微软官网下载镜像。
或者,你可使用自己的系统镜像:
-e VERSION: "https://example.com/win.iso"
也可以使用本地镜像:重命名 custom.iso 并将其放入空的 /storage
文件夹中以跳过下载。
或者docker-compose
version: "3"
services:
windows:
#VERSION: "win7"
image: dockurr/windows
container_name: windows
devices:
cap_add:
ports:
stop_grace_period: 2m
restart: on-failure
IPTables报错处理
? Extracting Windows 11 bootdisk...
? Extracting Windows 11 environment...
? Extracting Windows 11 setup...
? Extracting Windows 11 image...
? Adding XML file for automatic installation...
? Building Windows 11 image...
? Creating a 64G growable disk image in raw format...
iptables v1.8.10 (legacy): can't initialize iptables table `nat': Table does not exist (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
? ERROR: Status 3 while: iptables -t nat -A POSTROUTING -o "$VM_NET_DEV" -j MASQUERADE (line 185/311)
原因:宿主机是Centos8,没有加载iptables内核模块,先执行:
sudo modprobe iptable_filter
sudo modprobe iptable_nat
之后再开启windowns容器修复了这个问题。
解决:
参考链接:https://blog.51cto.com/u_16099170/6805497
sudo modprobe iptable_filter
sudo modprobe iptable_nat
KVM/QEMU报错处理
无法运行,报错信息如下:
❯ Extracting Windows 11 bootdisk...
❯ Extracting Windows 11 environment...
❯ Extracting Windows 11 setup...
❯ Extracting Windows 11 image...
❯ Adding XML file for automatic installation...
❯ Building Windows 11 image...
❯ Creating a 64G growable disk image in raw format...
❯ Booting Windows using QEMU emulator version 8.2.1 ...
qemu-system-x86_64: warning: KVM_GET_DEVICE_ATTR(0, KVM_X86_XCOMP_GUEST_SUPP) error: -22
qemu-system-x86_64: warning: KVM_GET_DEVICE_ATTR(0, KVM_X86_XCOMP_GUEST_SUPP) error: -22
qemu-system-x86_64: warning: KVM_GET_DEVICE_ATTR(0, KVM_X86_XCOMP_GUEST_SUPP) error: -22
qemu-system-x86_64: warning: KVM_GET_DEVICE_ATTR(0, KVM_X86_XCOMP_GUEST_SUPP) error: -22
qemu-system-x86_64: warning: KVM_GET_DEVICE_ATTR(0, KVM_X86_XCOMP_GUEST_SUPP) error: -22
qemu-system-x86_64: warning: KVM_GET_DEVICE_ATTR(0, KVM_X86_XCOMP_GUEST_SUPP) error: -22
qemu-system-x86_64: warning: KVM_GET_DEVICE_ATTR(0, KVM_X86_XCOMP_GUEST_SUPP) error: -22
qemu-system-x86_64: warning: KVM_GET_DEVICE_ATTR(0, KVM_X86_XCOMP_GUEST_SUPP) error: -22
BdsDxe: failed to load Boot0002 "UEFI QEMU QEMU HARDDISK " from PciRoot(0x0)/Pci(0xA,0x0)/Scsi(0x0,0x0): Not Found
BdsDxe: loading Boot0001 "UEFI QEMU QEMU CD-ROM " from PciRoot(0x0)/Pci(0x5,0x0)/Scsi(0x0,0x0)
BdsDxe: starting Boot0001 "UEFI QEMU QEMU CD-ROM " from PciRoot(0x0)/Pci(0x5,0x0)/Scsi(0x0,0x0)
❯ Shutdown completed!
解决:
egrep --color '(vmx|svm)' /proc/cpuinfo 查看硬件是否支持虚拟化
#如果回显有vmx或者svm,说明硬件支持虚拟化
modprobe kvm
modprobe kvm_intel
lsmod | grep kvm
使用
安装之后,就可以在浏览器打开 IP:8006 进行使用了http://192.168.3.104:8006
虽然,我也不知道这个时候装一个 Windows 11 有什么用…
法律问题
是的,该项目仅包含开源代码,不分发任何受版权保护的材料。它也不试图规避任何版权保护措施。因此,根据所有适用的法律,该项目将被视为合法。
获取
GitHub
https://github.com/dockur/windows
版权声明:本文内容来自小众软件:青小蛙,遵循CC 4.0 BY-SA版权协议上原文接及本声明。
本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
原文链接:https://www.appinn.com/install-windows-in-docker/
如有涉及到侵权,请联系,将立即予以删除处理。
在此特别鸣谢原作者的创作。
此篇文章的所有版权归原作者所有,与本公众号无关,商业转载建议请联系原作者,非商业转载请注明出处。