dockurwindows:在 Docker 里跑 Windows
文章目录
- dockur/windows:在 Docker 里跑 Windows
- 1、 它解决了什么问题
- 2、 支持哪些系统
- 3、 怎么用
- 4、 可以调哪些参数
- 5、 网络方面
- 6、 适合什么场景
dockur/windows:在 Docker 里跑 Windows
dockur/windows 在 GitHub 上已经拿到 51.7K Star 了。
这个项目做了一件很直接的事:用一个 Docker 容器把 Windows 跑起来。一条命令下去,从下载镜像到装好系统全自动完成,省掉了装虚拟机软件和手动配 ISO 的步骤。
1、 它解决了什么问题
在 Linux 或 macOS 上临时需要一个 Windows 环境,传统做法是装 VirtualBox 或 VMware,下载 ISO,手动走一遍安装流程,配网络、装驱动,折腾半小时起步。
dockur/windows 把这个过程压缩成一条 docker run 命令。容器启动后自动下载指定版本的 Windows ISO,通过 KVM 加速完成安装,装好之后通过浏览器或者 RDP 客户端直接连上去用。
2、 支持哪些系统
从 Windows XP 到 Windows 11,从 Server 2003 到 Server 2025,十几个版本都有对应的支持。在 compose 文件里改一下 VERSION 环境变量就行:
11对应 Windows 11 Pro,约 7.9 GB10l对应 Windows 10 LTSC,约 4.6 GBxp对应 Windows XP Professional,只有 0.6 GB2025对应 Windows Server 2025,约 7.6 GB
还可以指定自定义 ISO 的 URL,或者直接挂载本地 ISO 文件。ARM64 版本的 Windows 也有单独的项目(dockur/windows-arm)支持。
3、 怎么用
最简单的方式是 Docker Compose:
services: windows: image: dockurr/windows container_name: 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 restart: always stop_grace_period: 2m也可以直接用 Docker CLI:
docker run -it --rm --name windows -e "VERSION=11" -p 8006:8006 --device=/dev/kvm --device=/dev/net/tun --cap-add NET_ADMIN -v "${PWD:-.}/windows:/storage" --stop-timeout 120 docker.io/dockurr/windowsKubernetes 环境下同样能跑,项目提供了现成的 kubernetes.yml 文件。
容器启动后,浏览器打开 8006 端口就能看到安装过程。整个安装是全自动的,不需要手动点任何东西。装好之后,可以用任何 RDP 客户端连 3389 端口,获得更好的画质和音频支持。
4、 可以调哪些参数
CPU、内存、磁盘大小、用户名密码、系统语言、键盘布局,都能通过环境变量配置:
RAM_SIZE: "8G"和CPU_CORES: "4"调整资源,默认是 2 核 4GDISK_SIZE: "256G"扩展磁盘,默认 64GUSERNAME和PASSWORD设置账户,默认是 Docker/adminLANGUAGE: "French"切换系统语言,支持中文、日文、韩文等三十多种KEYBOARD和REGION调整键盘布局和区域设置
文件共享方面,桌面会有一个 Shared 文件夹,把主机目录挂载到/shared就能双向传文件。多块磁盘、磁盘直通、USB 设备直通也都支持。
5、 网络方面
默认用桥接网络,容器和主机共享 IP。如果需要容器有独立 IP,可以创建 macvlan 网络。还支持 DHCP 模式,让 Windows 直接从路由器获取 IP,像一台真正的物理机一样接入局域网。
6、 适合什么场景
临时需要 Windows 环境跑某个只能在 Windows 上运行的工具或脚本。CI/CD 流水线里需要 Windows 测试环境。快速搭一个隔离的 Windows 沙箱做安全测试。或者就是想在 NAS 上挂一个 Windows 虚拟机随时远程连上去。
虚拟化平台、ISO 管理、手动装系统这些全跳过了。Docker 能跑的地方,它就能跑。
试。或者就是想在 NAS 上挂一个 Windows 虚拟机随时远程连上去。
虚拟化平台、ISO 管理、手动装系统这些全跳过了。Docker 能跑的地方,它就能跑。
