Windows in a Docker container 上手记:一条命令装出 Windows 11
【免费下载链接】windowsWindows inside a Docker container.项目地址: https://gitcode.com/GitHub_Trending/wi/windows
项目里有个 .NET 应用必须在 Windows 上验证一遍,手边却只有一台装着 Docker 的 Linux 服务器,装虚拟化软件又不方便。这个项目(wi/windows)解决的就是这个问题:把 Windows 装进一个 Docker 容器,下载镜像、应答安装、拉起 QEMU 全由容器完成,你只负责在浏览器里等桌面出现。
它到底省在哪
| 维度 | 常规方案 | 该项目 |
|---|---|---|
| 安装方式 | 手动挂 ISO,逐步点安装向导 | 容器自动下载镜像并无人值守安装 |
| 宿主要求 | 装好虚拟化软件,逐台分配资源 | 2GB 以上可用内存、32GB 以上空闲磁盘,透传/dev/kvm |
| 资源分配 | 每台虚拟机固定内存和磁盘 | 默认 2 核 / 4GB / 64G 磁盘,环境变量可调 |
| 版本覆盖 | 一套系统一张 ISO | Win11 到 Win98、Server 2003 到 2025,另有 Tiny11 和 ReactOS |
表里的 7.9GB 是 README 版本表中 Win11 Pro 镜像的大小。所以它适合"一次性 Windows"场景:拉起来验证完就删掉,不用维护一台常驻虚拟机。
仓库里长什么样
clone 下来之后,顶层很干净:compose.yml、kubernetes.yml、src/、assets/加一个 Dockerfile。
- compose.yml 是部署入口,设备只挂
/dev/kvm和/dev/net/tun,映射 8006(Web 查看)和 3389(RDP)两个端口。 - Dockerfile 直接以 QEMU 镜像为基底,再装 ISO/WIM 解析工具,容器本质是"QEMU + 一套安装自动化脚本"。
- src/entry.sh 是主流程,按顺序 source 下载镜像、生成应答文件、建盘、配网等脚本,最后 exec QEMU。
- src/define.sh 负责解析VERSION,
"11"、"98"、"2025"这些取值在这里映射到具体 ISO,README 的版本表就是它的表面。 - assets/ 里每个版本一对
.cmd和.xml,是注入安装流程的无人值守应答文件,自动安装能全程无手动的关键就在这。
想查全部环境变量,看 docs/environment.md 即可。
从零到跑通 Windows 容器
- 先确认 KVM,容器依赖硬件虚拟化,没有它安装会慢到没法用:
# 输出 KVM acceleration can be used 才算通过 sudo kvm-ok- 克隆项目并启动:
# 用仓库自带的 compose 文件拉起容器 git clone https://gitcode.com/GitHub_Trending/wi/windows && cd windows && docker compose up -d- 打开
http://127.0.0.1:8006,看容器下载镜像并自动安装,Web 视图就是为这个阶段准备的。 - 桌面出现即安装完成。此时用 RDP 客户端连容器 IP 的 3389 端口,账号Docker、密码admin,能正常进入系统,就是跑通的确认信号。
谁该用、谁别用
适合:
- 需要一次性 Windows 环境做兼容性验证或 CI 测试,不想养虚拟机
- 要跑 Win7、Vista 这类老系统,又不想折腾旧虚拟化软件
- 有带 KVM 的 Linux 宿主机,想用 compose 文件管理整个 Windows 实例的生死
不适合:
- 追求完整本地桌面或 GPU 图形体验,它是容器加 RDP,不是本机
- macOS 和 Windows 10 用户,Docker Desktop 没有 KVM 透传,需 Linux 宿主机或开了嵌套虚拟化的 Windows 11
- 指望浏览器视图流畅度等同 RDP,README 明说 Web 视图响应较慢,日常使用建议走 RDP
跑 Windows 容器容易踩的几个点
Docker Desktop(Linux/macOS)拿不到 KVM→ 用原生 KVM 的 Linux 宿主机,或 Windows 11 开启嵌套虚拟化;kvm-ok通过但容器仍报 KVM 不可用时,可临时加privileged: true排查权限。
首次启动要下载完整 ISO,Win11 Pro 约 7.9GB→ 给容器留足 32GB 以上空闲磁盘,下载阶段别误判为卡死;自备 ISO 的话用 VERSION 指向它的 URL 即可跳过官方源。
首次安装前接 USB 大容量存储,可能被格式化成系统盘→ 容器第一次启动时别接 USB 存储设备,README 里对此有明确警告。
还在动的部分
README 的版本表已扩到 Windows Server 2025,ARM64 版本由 dockur/windows-arm 单独维护。WinBoat、WinPodX、WinApps 这类桌面应用也都拿这个容器做后端,生态侧的用法还在长。
如果你有"必须在 Windows 上验证、手上只有 Linux"的场景,clone 下来跑一遍docker compose up -d,下一次看 8006 端口时应该就能拿到一台能用的 Windows 11。
【免费下载链接】windowsWindows inside a Docker container.项目地址: https://gitcode.com/GitHub_Trending/wi/windows
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考