把完整 Windows 装进一个容器:用 Dockur/Windows 部署 Windows 容器实战指南
【免费下载链接】windowsWindows inside a Docker container.项目地址: https://gitcode.com/GitHub_Trending/wi/windows
把完整 Windows 系统跑进 Docker 容器,过去意味着手动装系统、手动刻盘。Dockur/Windows 把它压缩成一条 compose 命令:自动下载 ISO、全自动无人值守安装、开机直接进桌面,最低要求只有 2GB 内存和 32GB 磁盘。
传统方案的痛点:装得重,没法自动化
如果你用过虚拟机软件跑 Windows,大概体会过这些痛:图形界面里点安装向导要点二十分钟,同样的流程没法复制进 CI 流水线;每开一个新环境都要单独配一台虚拟机,配置也没法共享。Dockur/Windows 把两件事都解决了:容器自动下载、自动安装、自动开机,整条流程就是 src/ 目录里的一组 bash 脚本,环境用一份 compose.yml 就能复现。需要在新机器上开一套 Windows 测试环境时,拉个镜像跑起来就行。
Windows 容器怎么做到全自动安装
原理不神秘,相当于替你跑一遍装机向导。Dockerfile 本质是一个 QEMU(开源虚拟机监视器,负责模拟 CPU、磁盘这些硬件)镜像,容器启动后 src/entry.sh 按顺序执行一批脚本,每个脚本各管一段。关键机制有四个:
- 拉取安装源:mido.sh 按 VERSION 环境变量自动下载对应版本的 ISO,放进 /storage 缓存
- 无人值守应答文件:assets/ 目录为每个版本预置了应答文件(XML 格式的安装选项,提前答好分区、用户名、网络这些安装问题),装到第几步、用户叫什么,全都提前定好
- KVM 硬件加速:虚拟化直接由 CPU 指令完成,不走软件模拟,容器里的 Windows 接近原生速度
- Samba 文件共享:装完后桌面出现 Shared 文件夹,对应挂载到 /shared 的主机目录,在 Windows 里显示为 Z: 盘
启动流程很短,src/entry.sh 的核心就是一串按顺序执行的脚本调用:
# 摘自 src/entry.sh 的启动流程 . download.sh # 按 VERSION 下载 Windows 安装源 . define.sh # 确定版本、架构、语言 . answer.sh # 生成无人值守安装应答文件 . install.sh # 启动 QEMU 虚拟机执行安装 . samba.sh # 配置 Samba 共享文件夹 . boot.sh # 引导进入 Windows 桌面部署 Windows 容器:最小路径到桌面
第一步只是把 compose 文件跑起来。仓库根目录就有一份开箱即用的 compose.yml,核心是 KVM 设备(硬件加速)和存储挂载(磁盘落盘)两处:
services: windows: image: dockurr/windows # 官方镜像 environment: VERSION: "11l" # Windows 11 LTSC,镜像更小 devices: - /dev/kvm # KVM 硬件加速 - /dev/net/tun # 虚拟网络设备 cap_add: - NET_ADMIN # 虚拟网络权限 ports: - 8006:8006 # Web 控制台 - 3389:3389/tcp # RDP 远程端口 volumes: - ./windows:/storage # 磁盘存到宿主机跑起来后打开浏览器访问 8006 端口,能看到整个安装过程的实时画面。默认装的是 Windows 11 Pro,桌面出现后建议切到 RDP 客户端连 3389 端口(用户名 Docker,密码 admin),比网页端跟手,还支持剪贴板。想换 Windows 版本时,只改 compose.yml 里一行:
# 只改这一行就能装不同 Windows # VERSION: "11l" → Windows 11 LTSC(4.7 GB) # VERSION: "10" → Windows 10 Pro(5.7 GB) # VERSION: "core11" → Tiny11 Core(3.0 GB) # VERSION: "xp" → Windows XP(0.6 GB) docker compose up -d # 重启容器,自动重新下载安装把系统盘做到多小:镜像体积对比
同样是这一个容器,只改一个环境变量,落盘体积差出十几倍:
| VERSION | 系统 | 镜像大小 |
|---|---|---|
| 11(默认) | Windows 11 Pro | 7.9 GB |
| 11l | Windows 11 LTSC | 4.7 GB |
| core11 | Tiny11 Core | 3.0 GB |
| xp | Windows XP | 0.6 GB |
默认 Windows 11 Pro 要下载 7.9GB 的安装源,改一行成 core11 就是 3.0GB,选 Windows XP 只有 0.6GB。对开发测试、老系统兼容这类场景,意味着 32GB 空闲磁盘(官方最低要求)就完全够用。
容器里跑 Windows 的几个坑
- ⚠️KVM 不可用:容器报 KVM 不可用或启动奇慢 → 先到 BIOS 确认开了 VT-x/AMD-V,VPS 用户要确认服务商支持嵌套虚拟化,也可以用临时加 privileged: true 排除权限问题
- ⚠️首装时插着 U 盘:安装阶段直通 USB 存储设备,它可能被格式化成系统盘,数据全丢 → 首次启动容器前拔掉 U 盘,装完再直通
- ⚠️网页端卡顿:8006 的 Web 查看器主要服务于安装阶段,不支持剪贴板等功能 → 装完改用 RDP 连 3389 端口(用户名 Docker,密码 admin)
- ⚠️找不到想要的配置项:除 VERSION、RAM_SIZE 外还有 DISK_SIZE、NETWORK、GPU 等几十个细粒度开关 → 完整清单见 docs/environment.md
这个项目适合需要频繁创建和销毁 Windows 环境的场景:CI 流水线、开发测试、老系统兼容。不适合追求高可用的生产业务系统,容器套虚拟化的架构下磁盘和图形开销明显。Docker Desktop 的 macOS 环境没有 KVM,官方明确不支持,这类平台别硬上。有带 KVM 的 Linux 宿主机,直接拉镜像开跑。
【免费下载链接】windowsWindows inside a Docker container.项目地址: https://gitcode.com/GitHub_Trending/wi/windows
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考