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/windowscontainer_name: windowsdevices:cap_add:ports:stop_grace_period: 2mrestart: 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: -22qemu-system-x86_64: warning: KVM_GET_DEVICE_ATTR(0, KVM_X86_XCOMP_GUEST_SUPP) error: -22qemu-system-x86_64: warning: KVM_GET_DEVICE_ATTR(0, KVM_X86_XCOMP_GUEST_SUPP) error: -22qemu-system-x86_64: warning: KVM_GET_DEVICE_ATTR(0, KVM_X86_XCOMP_GUEST_SUPP) error: -22qemu-system-x86_64: warning: KVM_GET_DEVICE_ATTR(0, KVM_X86_XCOMP_GUEST_SUPP) error: -22qemu-system-x86_64: warning: KVM_GET_DEVICE_ATTR(0, KVM_X86_XCOMP_GUEST_SUPP) error: -22qemu-system-x86_64: warning: KVM_GET_DEVICE_ATTR(0, KVM_X86_XCOMP_GUEST_SUPP) error: -22qemu-system-x86_64: warning: KVM_GET_DEVICE_ATTR(0, KVM_X86_XCOMP_GUEST_SUPP) error: -22BdsDxe: failed to load Boot0002 "UEFI QEMU QEMU HARDDISK " from PciRoot(0x0)/Pci(0xA,0x0)/Scsi(0x0,0x0): Not FoundBdsDxe: 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/如有涉及到侵权,请联系,将立即予以删除处理。在此特别鸣谢原作者的创作。此篇文章的所有版权归原作者所有,与本公众号无关,商业转载建议请联系原作者,非商业转载请注明出处。
