一个在 Docker 容器中运行 Windows 10 的完整解决方案,支持通过 Web 浏览器、VNC 或 RDP 访问。
<项目根目录>/
├── Win10.qcow2 # Windows 10 镜像文件(需要提前准备)
├── start_docker_optimized.sh # 优化过后的启动脚本(默认)
├── start_docker.sh # Docker 模式启动脚本
├── stop_docker.sh # Docker 模式停止脚本
├── restart_docker.sh # Docker 模式重启脚本
├── start_local.sh # 本地模式启动脚本
├── stop_local.sh # 本地模式停止脚本
├── restart_local.sh # 本地模式重启脚本
├── scripts/ # 管理脚本目录
│ ├── start.sh # 启动虚拟机
│ ├── stop.sh # 停止虚拟机
│ ├── restart.sh # 重启虚拟机
│ ├── status.sh # 查看状态
│ ├── logs.sh # 查看日志
│ ├── clean.sh # 清理资源
│ ├── download_win10.sh# 下载镜像
│ ├── test_connection.sh# 测试连接
│ └── ... # 其他辅助脚本
├── docker/ # Docker 相关文件
│ ├── Dockerfile # Docker 镜像构建文件
│ ├── start.sh # 容器启动脚本
│ └── docker-compose.yml# Docker Compose 配置
├── docs/ # 文档目录
│ ├── SETUP.md # 安装设置指南
│ ├── API.md # API 文档
│ ├── DOCKER_REGISTRY.md# Docker 仓库文档
│ └── download_win10_iso_guide.md# ISO 下载指南
└── README.md # 项目说明
Win10.qcow2 已放置在项目根目录# 启动
./start_docker.sh
# 停止
./stop_docker.sh
# 重启
./restart_docker.sh
# 启动
./scripts/start.sh
# 停止
./scripts/stop.sh
# 重启
./scripts/restart.sh
# 启动
./start_local.sh
# 停止
./stop_local.sh
# 重启
./restart_local.sh
端口说明:
http://localhost:8006/vnc_auto.html?host=localhost&port=8006
需要开放端口:8006
地址: localhost:5900
工具: VNC Viewer、TigerVNC 等
需要开放端口:5900
地址: localhost:3389
工具: Windows 远程桌面连接
需要开放端口:3389
./scripts/start.sh
功能:
./scripts/stop.sh
功能:
./scripts/restart.sh
功能:
./scripts/status.sh
显示信息:
./scripts/logs.sh
实时查看容器日志输出。
./scripts/clean.sh
功能:
./scripts/test_connection.sh
测试所有服务的可访问性。
./scripts/download_win10.sh
多线程下载 Windows 10 镜像,支持断点续传。
Fork 项目后:请将镜像推送到自己的镜像仓库,并修改
docker/docker-compose.yml和相关脚本中的镜像地址
项目默认使用公开镜像仓库:
docker pull docker.cnb.cool/yanglioutest/windows-tiny-10/win10-novnc:latest
重要:如果您 Fork 本项目到自己的仓库,建议将镜像推送到您的镜像仓库:
docker pull docker.cnb.cool/yanglioutest/windows-tiny-10/win10-novnc:latest
# 替换为您的镜像仓库地址
docker tag docker.cnb.cool/yanglioutest/windows-tiny-10/win10-novnc:latest <your-registry>/<your-image-name>:latest
docker push <your-registry>/<your-image-name>:latest
修改以下文件中的镜像地址:
docker/docker-compose.yml:
image: <your-registry>/<your-image-name>:latest
docker/start.sh(如果需要):
IMAGE="<your-registry>/<your-image-name>:latest"
start_docker.sh 和其他启动脚本(如果包含镜像地址)
您也可以使用提供的 Dockerfile 构建自己的镜像:
docker build -t <your-registry>/<your-image-name>:latest -f docker/Dockerfile <项目根目录>
| 端口 | 协议 | 说明 |
|---|---|---|
| 5900 | VNC | VNC 协议端口 |
| 8006 | HTTP | noVNC Web 界面 |
| 3389 | RDP | 远程桌面协议 |
docker compose -f docker/docker-compose.yml up -d
使用默认镜像:
docker run -d \
--name win10-novnc \
-p 5900:5900 \
-p 8006:8006 \
-p 3389:3389 \
--cap-add NET_ADMIN \
docker.cnb.cool/yanglioutest/windows-tiny-10/win10-novnc:latest
使用自定义镜像(Fork 项目后):
docker run -d \
--name win10-novnc \
-p 5900:5900 \
-p 8006:8006 \
-p 3389:3389 \
--cap-add NET_ADMIN \
<your-registry>/<your-image-name>:latest
./scripts/status.sh
./scripts/logs.sh
./scripts/restart.sh
./scripts/clean.sh
./scripts/start.sh
# 检查状态
./scripts/status.sh
# 查看日志
./scripts/logs.sh
# 清理并重启
./scripts/clean.sh
./scripts/start.sh
# 检查端口
netstat -tlnp | grep 8006
# 测试连接
./scripts/test_connection.sh
修改启动脚本中的内存参数:
# 在 start_docker.sh 或 scripts/start.sh 中找到 -m 参数
-m 16G # 从 32G 改为 16G 或更小
项目使用 Git LFS 管理大文件。Fork 项目后,请确保:
# 初始化 LFS
git lfs install
# 拉取大文件
git lfs pull
# 如果遇到问题,强制拉取
git lfs install --force
git lfs fetch --all
git lfs checkout
本项目可以自由 Fork 到您自己的代码仓库中进行自定义和修改:
重要:Fork 项目后,您需要将 Docker 镜像推送到自己的镜像仓库并修改配置:
拉取并推送镜像:
docker pull docker.cnb.cool/yanglioutest/windows-tiny-10/win10-novnc:latest
docker tag docker.cnb.cool/yanglioutest/windows-tiny-10/win10-novnc:latest <your-registry>/<your-image-name>:latest
docker push <your-registry>/<your-image-name>:latest
修改配置文件中的镜像地址:
docker/docker-compose.ymldocker/start.shstart_docker.sh验证配置:
# 修改配置后,测试启动
./scripts/start.sh
Fork 后,您可以根据需求修改以下内容:
本项目仅供学习和个人使用。
2026-02-14: v1.2.0
2026-02-13: v1.1.0
2026-02-13: v1.0.0