Windows进Docker:4万星实战指南

项目概述

windows 是一个将完整的 Windows 系统封装进 Docker 容器的开源项目。它的目标是用熟悉的容器工作流,提供可重复、可移植的 Windows 运行环境,服务于开发、测试与自动化等场景。项目在容器内编排虚拟化引擎,结合宿主机的硬件加速(如可用的 KVM),实现一键启动、持久化存储与平滑重启,并可通过浏览器或远程桌面进行图形访问。相较传统虚拟机管理器,它以镜像与 Compose 驱动的声明式配置交付环境,便于版本化、审计与团队共享,显著降低平台差异带来的环境漂移。其独特价值在于把“系统级虚拟化”纳入“容器式生命周期管理”,让部署、迁移与清理像运行普通服务一样简单高效。

项目统计

:bar_chart: 项目概况

:star: 42059 Stars | :fork_and_knife: 3084 Forks | :eyes: 42059 Watchers | :bug: 111 Issues

:page_facing_up: 开源协议: MIT License | :date: 创建于: 2024-01-14 | :counterclockwise_arrows_button: 更新于: 2025-09-02

:laptop: 技术栈

该项目主要使用 Shell 开发,占代码库的 99.1%。此外还包含 Dockerfile (0.9%)

核心功能

把完整的 Windows 放进容器,像部署服务一样启动、停止与复用,适合开发、测试、演示与临时桌面场景。

  • 一条命令拉起环境,自动准备虚拟机与驱动,几分钟即可进入桌面,即开即用
  • 支持多版本 Windows(如 10/11),可并行运行多个实例互不干扰,方便隔离测试
  • 浏览器直连远程桌面,无需额外客户端(基于 VNC/noVNC),移动端也能访问
  • 通过环境变量配置 CPU、内存、磁盘与分辨率,按需弹性分配,节省宿主资源
  • 在兼容主机上启用 KVM 硬件加速,获得更接近原生的体验,图形与交互更顺滑
  • 使用数据卷持久化系统与用户文件,容器重建也不丢数据,备份与迁移更从容
  • 端口映射与网络隔离灵活可控,便于接入 RDP、HTTP 等服务,内外网均可用
  • 脚本化构建,易于融入自动化与云原生工作流,一键集成到 CI/CD

更多功能特性正在不断完善中。

技术架构

该项目以“容器包装虚拟机”的思路,将 Windows 运行在 Docker 容器中,核心由 Shell 启动脚本驱动的 QEMU 组合构成。技术架构与设计要点如下:

  • 运行时:Docker 作为分发与编排层,容器内启动 QEMU 进程;宿主支持时映射 /dev/kvm 获得接近原生的硬件加速,不支持则回退软件仿真。
  • 存储:以 qcow2/raw 镜像作为系统盘与数据盘,通过 Docker 卷持久化;优先使用 virtio 提升磁盘与网络 I/O 性能。
  • 网络:通过端口映射提供对外访问,可按需选择用户态或桥接网络;远程图形访问(如 VNC/RDP)依据配置启用。
  • 启动流程:Shell 脚本读取环境变量(CPU/内存/磁盘/引导介质等),按需拼装 QEMU 参数并自动拉取/挂载所需资源,降低手工配置成本。
  • 设计理念:用容器化封装虚拟化,获得可移植、可复现、一致的运行环境;在保证隔离性的同时追求简单部署与可观测性,并以最小必需权限进行设备映射以兼顾安全与性能。

使用指南

  • 前置条件:已安装 Docker。Linux 建议启用 KVM(存在 /dev/kvm 可加速),macOS/Windows 无 KVM 也可运行但较慢。
  • 快速运行(Linux/KVM):
    docker run -d --name windows \
      --device /dev/kvm \
      -p 8006:8006 -p 3389:3389 \
      -v $PWD/data:/data \
      dockurr/windows
    
    无 KVM 可去掉 --device /dev/kvm 运行。
  • docker-compose 示例(推荐持久化与自定义资源):
    services:
      windows:
        image: dockurr/windows
        container_name: windows
        devices:
          - /dev/kvm
        ports:
          - "8006:8006"
          - "3389:3389"
        volumes:
          - ./data:/data
        environment:
          VERSION: "win11"
          RAM_SIZE: "4G"
          CPU_CORES: "2"
          DISK_SIZE: "64G"
    
    启动:docker compose up -d
  • 使用方式:
    • 打开 http://localhost:8006 进入 Web 控制台,按向导完成 Windows 安装与账户设置。
    • 安装完成后,可用 3389 端口通过 RDP 客户端远程连接(本机为 127.0.0.1:3389)。
  • 常用命令:
    • 查看日志:docker logs -f windows
    • 停止/启动:docker stop windows / docker start windows
    • 删除容器:docker rm -f windows(数据保存在 ./data)

总结评价

该项目将Windows以容器形式运行,本质上通过QEMU/KVM在Docker中封装虚拟机,突出一键化部署、镜像化管理与可移植性。42k+ Star体现较高关注度,社区反馈多集中在性能、硬件加速与兼容性问题。其亮点在于将复杂虚拟化流程脚本化,降低使用门槛,适合临时环境、演示、持续集成等场景。使用时应关注宿主机虚拟化能力、容器特权与资源占用,并遵守Windows许可;对长期稳定桌面或高性能图形需求,传统虚拟机/裸机更稳妥。展望上,若进一步完善GPU/USB直通、网络与自动化配置,将提升实用性与可维护性。