在Linux上用 Docker 安装 Windows 7 到 Windows 11,无限套娃的最高境界【测试成功】

艺帆风顺 发布于 2025-04-03 24 次阅读


    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

docker run -it --rm -p 8006:8006 --device=/dev/kvm --cap-add NET_ADMIN --stop-timeout 120 dockurr/windows

默认情况下,会安装 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 11

  • win10 = Windows 10

  • win81 = Windows 8.1

  • win22 = Windows Server 2022

  • win19 = Windows Server 2019

  • win16 = Windows Server 2016

  • tiny11 = 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: - /dev/kvm cap_add: - NET_ADMIN ports: - 8006:8006 - 3389:3389/tcp - 3389:3389/udp 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: -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: -22



        BdsDxe: 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/如有涉及到侵权,请联系,将立即予以删除处理。在此特别鸣谢原作者的创作。此篇文章的所有版权归原作者所有,与本公众号无关,商业转载建议请联系原作者,非商业转载请注明出处。