dockur/windows 中文教程:在 Docker 里跑一个完整 Windows 虚拟机
2026-09-11发表于
Web 与自托管一、速览:把 Windows 装进 Docker 容器
入门
dockur/windows 让你能在 Docker 容器里运行一个完整的 Windows 虚拟机。Docker 是一种把软件打包成“集装箱”、随处可运行的工具,而这个项目相当于把 Windows 也装进了这样的集装箱。
它解决了几个常见痛点。比如你的服务器是 Linux,但偶尔需要跑一个只有 Windows 才能用的软件;或者你想在 NAS 上开一个 Windows 环境做测试。不用单独装双系统,也不用再买一台 Windows 主机。
这个项目会自动下载 Windows 安装镜像并完成无人值守安装。它还支持 KVM 硬件加速——一种让 Linux 直接调用 CPU 虚拟化指令来跑虚拟机的技术,所以性能接近原生,不会像传统软件模拟那么卡。
注意:这里跑的是完整 Windows 系统,不是某个 Windows 应用。它需要一定的 CPU、内存和磁盘资源,并不是轻量级容器。
二、安装前的准备
入门
开始安装前,你需要一台能联网的 Linux 服务器或 NAS。建议至少有 2 核 CPU、4GB 内存和 30GB 以上可用磁盘。为什么需要这些?因为 Windows 本身就比较占资源,磁盘太小装不下系统。
最关键的是 CPU 必须支持虚拟化技术(Intel VT-x 或 AMD-V),并且已经在主板 BIOS 里开启。你可以登录服务器执行下面这条命令检查:
ls -l /dev/kvm
如果显示 No such file or directory,说明 KVM 设备不存在,Windows 将只能使用软件模拟运行,速度会非常慢。
另外还需要 /dev/net/tun 设备,用于容器网络。用下面命令检查:
ls -l /dev/net/tun
最后,确保已经安装好 Docker 和 Docker Compose。如果还没装,可以参照 Docker 官方文档安装,这里不再展开。
三、安装:用 Docker Compose 启动
入门
推荐使用 Docker Compose 方式,因为配置更清晰、修改更方便。先创建一个目录存放配置文件和后续数据:
mkdir -p ~/windows
cd ~/windows
然后创建 docker-compose.yml 文件,内容如下:
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
这个配置的含义是:使用 VERSION: "11" 指定安装 Windows 11;把宿主机 /dev/kvm 和 /dev/net/tun 设备透传给容器;开放 8006 端口用于浏览器查看画面,3389 端口用于远程桌面;把当前目录下的 windows 文件夹挂载到容器内作为数据存储。
保存文件后,在目录下执行:
docker compose up -d
容器会开始运行并自动下载 Windows 安装镜像。也可以用 Docker CLI 单条命令启动,但参数较长,不如 Compose 直观。
四、核心用法:连接远程桌面和 Web 查看器
进阶 · 推荐细读
首次启动后,容器会自动下载 Windows 安装 ISO 并开始无人值守安装。整个过程可能需要十几分钟甚至更久,取决于服务器性能和网络速度。你可以用下面的命令查看安装日志:
docker logs -f windows
看到类似安装进度或重启信息时,说明系统正在安装。安装完成后,容器会自动进入 Windows 桌面。
要连接 Windows,最常用的方式是远程桌面。在 Windows 电脑上按 Win + R 输入 mstsc 打开远程桌面客户端,地址填 你的服务器IP:3389。默认用户名是 Docker,密码是 admin。
如果没有 Windows 电脑,也可以在浏览器里打开 http://你的服务器IP:8006,这是项目提供的 Web 查看器,能实时看到 Windows 画面并操作,不过浏览器方式延迟会高一些。

登录后建议尽快修改默认密码,尤其是把端口暴露到公网时,避免被他人登录。
五、配置:用户名、磁盘大小和资源共享
进阶 · 推荐细读
想要自定义 Windows 的配置,只需在 docker-compose.yml 的 environment: 部分添加变量,然后重新执行 docker compose up -d。
最常见的是修改登录账户。默认用户是 Docker,密码 admin,你可以改成自己的:
environment:
USERNAME: "bill"
PASSWORD: "gates"
如果想调整磁盘大小,比如从默认的 64GB 扩到 256GB:
environment:
DISK_SIZE: "256G"
注意,扩容后 Windows 里不会立刻显示新空间,需要手动在“磁盘管理”里扩展分区,因为新增空间会显示为未分配。
还可以通过 RAM_SIZE 和 CPU_CORES 指定内存和 CPU 核数。例如分配 8GB 内存和 4 核:
environment:
RAM_SIZE: "8G"
CPU_CORES: "4"
宿主机目录共享通过挂载实现:在 volumes: 里添加类似 ./share:/shared 的映射,Windows 内即可访问该共享目录。
六、运维场景:自启、备份与监控
深入 · 老手可选
如果你希望服务器重启后 Windows 容器自动运行,只需保留 restart: always 配置。Docker 会在开机后自动拉起容器,无需手动干预。
备份数据时,主要备份挂载目录(例如 ./windows)即可,里面存有虚拟磁盘和安装文件。直接把整个目录打包存放,恢复时放到同样路径重新启动容器就行。
监控资源占用可以用 Docker 自带的命令:
docker stats windows
它会实时显示 CPU、内存、网络和磁盘 IO。如果发现内存长期打满,建议调低 RAM_SIZE 或给宿主机增加内存。
这个容器也可以作为 CI/CD 流程的一部分。例如,在自动化测试中需要 Windows 环境时,用 Docker Compose 快速拉起一个临时 Windows,跑完测试再销毁。
七、踩坑:权限、网络和性能问题
深入 · 老手可选
常见的问题是容器无法访问 /dev/kvm。如果启动后日志提示 KVM 不可用,先检查宿主机是否有该设备。有设备但权限不足时,可以执行:
sudo chmod 666 /dev/kvm
不过这条命令只是临时解决,重启后可能失效。更稳妥的办法是把当前用户加入 kvm 组,再重新登录。
网络方面,默认使用 NAT 模式,容器内部可以上网,但外部设备不能主动访问 Windows 内的服务。如果需要局域网内其他设备直接访问,可以配置 macvlan 网络。这部分配置相对复杂,建议先确认是否真的需要。
磁盘扩容后,Windows 里显示的空间不会自动变大,必须到“磁盘管理”里手动扩展分区。如果跳过这步,新增的磁盘空间会一直处于未分配状态。
最后提醒:如果不使用 KVM 加速,Windows 会异常缓慢,甚至无法完成安装。务必确保 CPU 虚拟化已开启、/dev/kvm 可用后再正式使用。
项目信息
| 项目 | 值 |
|---|---|
| 仓库 | dockur/windows |
| 语言 | Shell |
| Star | 53,208 |
| Fork | 4,756 |
| 主页 | 无 |
参考链接
延伸阅读
想继续探索?这些同领域的教程可能也适合你:
128
72
1
1448
文章目录
评论