在 Docker 容器里跑 Windows:Dockur/Windows 最小部署与故障排查指南
【免费下载链接】windowsWindows inside a Docker container.项目地址: https://gitcode.com/GitHub_Trending/wi/windows
Dockur/Windows 把一套 Windows 系统装进 Docker 容器:启动容器后自动下载官方 ISO 并完成安装,装好后可通过浏览器或 RDP 使用。它适合想在 Linux 上临时开一台 Windows 做测试的人。本文按实际部署顺序组织:先判断环境是否合适,再给出最短部署路径、结果验证方式和失败排查顺序,照着做可以完成一次完整部署。
先判断适不适合你的环境
适合使用:
- 你有一台 Linux 主机,装了 Docker 或 Podman,且 CPU 支持 KVM 硬件虚拟化。
- 需要一台可丢弃的 Windows 做软件测试、兼容性验证或教学演示,用完删掉即可。
- 需要运行老系统(Windows 95/98/XP/7、Vista)或 Windows Server 2003 至 2025,手动装镜像麻烦。
谨慎选择:
- 你在 Linux、macOS 或 Windows 10 上用的是 Docker Desktop:资料明确这类环境无法给容器提供 KVM 访问,不受支持。Windows 11 上的 Docker Desktop 需要先开启嵌套虚拟化才能用。
- 宿主硬件没有 VT-x / AMD-V,或你用的 VPS、云平台不支持嵌套虚拟化。
- 需要 GPU 图形加速的场景:该能力目前仍是实验性质。
部署前的最小检查项
开始之前,逐项确认以下条件,每项都有对应的验证方法:
| 检查项 | 怎么验证 | 通过标准 |
|---|---|---|
| 容器运行时 | 确认已安装 Docker 或 Podman 并能正常运行 | 能正常启动容器 |
| KVM 加速 | 安装cpu-checker后执行检查命令(见下) | 输出KVM acceleration can be used,且/dev/kvm设备存在 |
| 内存 | 确认宿主可用内存 | 官方要求至少 2 GB;默认给 Windows 分配 4 GB,建议按 4 GB 以上准备 |
| 磁盘 | 确认存储目录所在分区空闲空间 | 官方下限 32 GB;默认虚拟磁盘就是 64 GB,建议实际空闲空间明显大于此值 |
| 网络 | 确认能访问微软官方下载源 | 安装过程会自动下载 0.1 GB 至 7.9 GB 不等的 ISO,网络不稳会卡在下载阶段 |
KVM 验证命令:
sudo kvm-ok ls -l /dev/kvm一条最短可用路径:用 Compose 启动容器
仓库自带可直接使用的 compose.yml,克隆后在目录下启动即可,不需要手写配置:
git clone https://gitcode.com/GitHub_Trending/wi/windows cd windows && docker compose up -d执行前请确认:该命令会下载容器镜像,容器启动后还会自动下载 Windows ISO 并执行安装,整个过程耗时取决于网络和所选版本大小。
如果你不想克隆仓库,自己写 compose 文件时,关键字段就是下面这些(完整版以仓库 compose.yml 为准):
services: windows: image: dockurr/windows environment: { VERSION: "11" } devices: ["/dev/kvm", "/dev/net/tun"] cap_add: [NET_ADMIN] ports: ["8006:8006", "3389:3389/tcp", "3389:3389/udp"] volumes: ["./windows:/storage"]其中./windows:/storage是系统盘存放位置,建议保留,方便容器重建后系统数据还在;VERSION: "11"表示安装 Windows 11 专业版,不写默认也是它。
可选方式:习惯纯命令行的人可以用docker run一条命令启动,参数与上面的 compose 等价;已有 K8s 集群的,仓库提供了 kubernetes.yml,其中 PVC 默认请求 64 GiB 存储。另外 WinBoat、WinPodX、WinApps 等桌面应用也是把这个容器当后端使用的。
关键选项:版本、资源、存储怎么选
只保留日常最常改的四项,其余参数默认值即可:
| 选项 | 默认值 | 什么情况下调整 |
|---|---|---|
VERSION | 11(Win11 专业版,ISO 约 7.9 GB) | 想省下载和磁盘空间用11l(LTSC,4.7 GB);测老软件用7u(Win7,3.1 GB);需要服务器用2022(6.0 GB)或2025(7.6 GB) |
RAM_SIZE/CPU_CORES | 4G / 2 核 | 安装或使用时明显卡顿再调大,如RAM_SIZE: "8G"、CPU_CORES: "4" |
DISK_SIZE | 64G | 要装大型软件时调大,如DISK_SIZE: "256G";也可对已有磁盘扩容,但扩容后多出的空间需在 Windows 里手动扩展分区 |
| 文件共享 | 未启用 | 挂载一个主机目录到容器内/shared,安装后桌面会出现Shared文件夹,同时是盘符Z:,用来在主机和 Windows 之间传文件 |
几个容易忽略的默认行为:
- 默认创建的用户是
Docker,密码admin,开机自动登录;想换账号用USERNAME/PASSWORD设置。 - 默认下载英文系统,语言用
LANGUAGE指定(如Chinese)。 - 默认不向浏览器传音频,需要时设
AUDIO: "Y",再在网页查看器的 Settings → Advanced 里打开 Audio。
怎么确认已经装成功
按这个顺序验证,每一步都有明确判断标准:
- 容器是否启动:执行
docker logs windows查看日志,若出现 KVM 不可用、内存不足等报错,直接跳到下一节的排查。 - 安装是否在进行中:浏览器打开
http://127.0.0.1:8006/,能看到 Windows 安装画面且自动推进,说明容器和下载都正常。整个安装无需人工操作。 - 安装是否完成:浏览器里出现 Windows 桌面,即表示安装结束、系统可用。
- 日常使用是否可用:用任意 RDP 客户端连接。compose 里映射了 3389 端口时,直接连
127.0.0.1:3389,账号Docker、密码admin,能登录桌面即通。 - 共享是否生效(如有配置):桌面上出现
Shared文件夹,说明文件共享挂载成功。
资料里特别提示:网页查看器响应不如 RDP 流畅,也不支持剪贴板共享,它主要用于安装阶段;日常使用建议走 RDP。
失败时按什么顺序排查
不要一次改多处,按下面顺序逐项排除:
- 容器起不来,或日志提示 KVM 不可用
- 先跑
kvm-ok:如果未通过,检查 BIOS/UEFI 里是否开了 Intel VT-x 或 AMD-V;宿主本身是虚拟机时,还要确认开了嵌套虚拟化。 - 如果
kvm-ok通过但容器仍报 KVM 不可用,可能是权限或设备访问问题:资料建议在 Compose 里临时加privileged: true验证一次,确认是权限问题后再去掉,改用正确的设备挂载和权限配置。
- 先跑
- 启动时内存检查失败
- 容器默认开启宿主内存检查(
RAM_CHECK默认为Y),而RAM_SIZE默认 4G。宿主可用内存不够时它不会启动;增加宿主内存或调低RAM_SIZE。
- 容器默认开启宿主内存检查(
- 卡在 ISO 下载
- 先确认宿主网络到微软下载源的连通性;再看
/storage所在分区的空闲空间是否够(ISO 大小加 64 GB 虚拟盘)。
- 先确认宿主网络到微软下载源的连通性;再看
- 能进系统但操作卡顿
- 判断标准:如果只有网页里卡、RDP 里流畅,那是查看器本身的延迟,换 RDP 即可;两种都卡时再调大
RAM_SIZE和CPU_CORES。
- 判断标准:如果只有网页里卡、RDP 里流畅,那是查看器本身的延迟,换 RDP 即可;两种都卡时再调大
- 安装完成后桌面没有 Shared 文件夹
- 检查 compose 里是否把主机目录挂载到了
/shared,路径不存在时容器侧可能自动创建空目录,但主机侧路径权限要能读写。
- 检查 compose 里是否把主机目录挂载到了
进阶能力与边界
以下能力资料中都有明确支持,用到时再配置:
- 让 Windows 拥有独立 IP:创建 macvlan 网络并在 compose 中指定固定 IP,之后可以免端口映射访问所有服务;注意 macvlan 的设计决定了 Docker 宿主访问不到这个 IP。在此基础上设
DHCP: "Y"并挂载/dev/vhost-net,Windows 还能像真实 PC 一样从路由器 DHCP 获取地址。 - 安装后自动执行任务:设
COMMAND跑单条命令,或把含install.bat的文件夹挂到/oem,安装最后阶段会自动执行,适合批量预装软件。 - 自定义镜像:
VERSION填 ISO 的下载 URL,或把本地 ISO 挂载为/custom.iso直接跳过下载。 - USB 直通:用
lsusb查设备 ID,通过ARGUMENTS传入。资料明确警告:安装完成前接入 USB 大容量存储设备,可能把它格式化成系统盘导致数据丢失,首次启动务必断开。 - 域环境:设
DOMAIN/DOMAIN_OU可在安装时自动加入 Active Directory,前提是 Windows 能通过域 DNS 解析并访问域控。
边界提醒:GPU 加速是实验功能;ARM64 架构的 Windows 不在本容器范围内(资料指向单独的 windows-arm 项目);本项目只含开源代码、不分发 Windows,产品密钥仅为微软公开的通用安装密钥,激活和许可合规由使用者自行负责。全部环境变量的清单见 docs/environment.md。
小结
这个项目适合"有 KVM 的 Linux 主机 + 想要临时 Windows 环境"的用户:最短路径是克隆仓库后docker compose up -d,装好与否看 8006 端口的浏览器页面是否出现桌面,日常使用走 RDP。跑通之后,可按需扩展版本选择、磁盘扩容、文件共享、独立 IP 和安装后脚本这几类配置。
【免费下载链接】windowsWindows inside a Docker container.项目地址: https://gitcode.com/GitHub_Trending/wi/windows
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考