logo
3
0
WeChat Login

Windows 10 虚拟机 - Docker + noVNC

一个在 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            # 项目说明

快速开始

前置要求

  • Docker 已安装并运行
  • Windows 10 镜像文件 Win10.qcow2 已放置在项目根目录
  • 至少 32GB 可用内存(推荐以获得最佳性能)
  • 至少 20GB 可用磁盘空间

启动方式

方式一:Docker 模式(推荐)

# 启动
./start_docker.sh

# 停止
./stop_docker.sh

# 重启
./restart_docker.sh

方式二:使用 scripts 目录脚本

# 启动
./scripts/start.sh

# 停止
./scripts/stop.sh

# 重启
./scripts/restart.sh

方式三:本地模式(需要本地安装 QEMU)

# 启动
./start_local.sh

# 停止
./stop_local.sh

# 重启
./restart_local.sh

访问虚拟机

端口说明

  • 如果使用远程环境(如云IDE),需要在控制面板中手动开放端口
  • 开放端口通常在界面中的 PORTS 或端口转发设置中
  • 根据访问方式开放对应端口:8006(Web)、5900(VNC)、3389(RDP)

Web 浏览器(推荐)

http://localhost:8006/vnc_auto.html?host=localhost&port=8006

需要开放端口:8006

VNC 客户端

地址: localhost:5900
工具: VNC Viewer、TigerVNC 等

需要开放端口:5900

RDP 远程桌面

地址: localhost:3389
工具: Windows 远程桌面连接

需要开放端口:3389

管理脚本

启动虚拟机

./scripts/start.sh

功能:

  • 自动检查镜像文件
  • 启动 Docker 容器
  • 等待服务就绪
  • 显示访问信息

停止虚拟机

./scripts/stop.sh

功能:

  • 优雅停止容器
  • 清理残留进程
  • 释放资源

重启虚拟机

./scripts/restart.sh

功能:

  • 停止当前运行的虚拟机
  • 重新启动

查看状态

./scripts/status.sh

显示信息:

  • 容器运行状态
  • 端口监听状态
  • 进程和内存使用
  • 磁盘空间
  • 访问地址
  • 快捷操作提示

查看日志

./scripts/logs.sh

实时查看容器日志输出。

清理资源

./scripts/clean.sh

功能:

  • 停止并删除容器
  • 清理 QEMU 进程
  • 删除临时文件
  • 清理 Docker 资源
  • 可选:删除 Docker 镜像

测试连接

./scripts/test_connection.sh

测试所有服务的可访问性。

下载镜像

./scripts/download_win10.sh

多线程下载 Windows 10 镜像,支持断点续传。

系统配置

  • 操作系统:Windows 10
  • 内存:32 GB(默认配置,可在脚本中调整)
  • CPU:16 核心(默认配置,可在脚本中调整)
  • 虚拟化:TCG(软件虚拟化,无需 KVM)
  • 网络:NAT 模式
  • Docker 镜像:默认使用公开镜像仓库,可自定义

Fork 项目后:请将镜像推送到自己的镜像仓库,并修改 docker/docker-compose.yml 和相关脚本中的镜像地址

Docker 镜像使用

使用默认镜像

项目默认使用公开镜像仓库:

docker pull docker.cnb.cool/yanglioutest/windows-tiny-10/win10-novnc:latest

Fork 项目后的镜像配置

重要:如果您 Fork 本项目到自己的仓库,建议将镜像推送到您的镜像仓库:

步骤 1:拉取默认镜像

docker pull docker.cnb.cool/yanglioutest/windows-tiny-10/win10-novnc:latest

步骤 2:重新标记镜像

# 替换为您的镜像仓库地址
docker tag docker.cnb.cool/yanglioutest/windows-tiny-10/win10-novnc:latest <your-registry>/<your-image-name>:latest

步骤 3:推送到您的仓库

docker push <your-registry>/<your-image-name>:latest

步骤 4:修改配置文件

修改以下文件中的镜像地址:

  1. docker/docker-compose.yml

    image: <your-registry>/<your-image-name>:latest
    
  2. docker/start.sh(如果需要):

    IMAGE="<your-registry>/<your-image-name>:latest"
    
  3. start_docker.sh 和其他启动脚本(如果包含镜像地址)

构建自定义镜像

您也可以使用提供的 Dockerfile 构建自己的镜像:

docker build -t <your-registry>/<your-image-name>:latest -f docker/Dockerfile <项目根目录>

镜像信息

  • 镜像大小:1.11 GB
  • 基于:Ubuntu + QEMU + noVNC
  • 包含组件
    • QEMU (x86_64)
    • noVNC (HTML5 VNC Client)
    • websockify
    • 网络配置工具

端口映射

端口协议说明
5900VNCVNC 协议端口
8006HTTPnoVNC Web 界面
3389RDP远程桌面协议

Docker 部署

使用 Docker Compose

docker compose -f docker/docker-compose.yml up -d

使用 Docker Run

使用默认镜像

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

技术栈

  • QEMU:x86_64 虚拟化(TCG模式)
  • noVNC:HTML5 VNC 客户端
  • websockify:WebSocket 到 TCP 的代理
  • Docker:容器化部署

常见问题

Q1: 启动失败怎么办?

# 检查状态
./scripts/status.sh

# 查看日志
./scripts/logs.sh

# 清理并重启
./scripts/clean.sh
./scripts/start.sh

Q2: Web 界面无法访问?

# 检查端口
netstat -tlnp | grep 8006

# 测试连接
./scripts/test_connection.sh

Q3: 内存不足?

修改启动脚本中的内存参数:

# 在 start_docker.sh 或 scripts/start.sh 中找到 -m 参数
-m 16G  # 从 32G 改为 16G 或更小

Git LFS

项目使用 Git LFS 管理大文件。Fork 项目后,请确保:

# 初始化 LFS
git lfs install

# 拉取大文件
git lfs pull

# 如果遇到问题,强制拉取
git lfs install --force
git lfs fetch --all
git lfs checkout

注意事项

  1. 内存使用:容器需要约 32GB 内存(可在脚本中调整)
  2. 磁盘空间:确保有足够的磁盘空间(至少 15GB)
  3. 网络:首次启动可能需要等待 Windows 启动完成
  4. 性能:软件虚拟化性能略低于硬件虚拟化(KVM)
  5. 端口:需要手动开放端口(8006, 5900, 3389)才能远程访问

Fork 和自定义

本项目可以自由 Fork 到您自己的代码仓库中进行自定义和修改:

Fork 项目

  1. 访问项目页面并点击 Fork 按钮
  2. 选择 Fork 到您自己的账户或组织

Fork 后的必要配置

重要:Fork 项目后,您需要将 Docker 镜像推送到自己的镜像仓库并修改配置:

  1. 拉取并推送镜像

    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
    
  2. 修改配置文件中的镜像地址

    • docker/docker-compose.yml
    • docker/start.sh
    • start_docker.sh
    • 其他包含镜像地址的脚本文件
  3. 验证配置

    # 修改配置后,测试启动
    ./scripts/start.sh
    

自定义配置

Fork 后,您可以根据需求修改以下内容:

  • Docker 镜像:将镜像推送到自己的仓库,修改相关配置(必做)
  • 资源配置:根据您的服务器调整内存和 CPU 设置
  • 网络配置:自定义端口映射和网络模式
  • 脚本配置:根据实际环境修改启动和配置脚本

许可证

本项目仅供学习和个人使用。

更新日志

  • 2026-02-14: v1.2.0

    • 性能优化:内存32G,CPU 16核心
    • TCG软件虚拟化优化配置
    • 系统优化:q35芯片组,e1000网卡
    • 简化配置,移除复杂的宽屏设置
    • 更新文档说明
  • 2026-02-13: v1.1.0

    • 添加根目录快速启动脚本(Docker 模式和本地模式)
    • 更新 Docker Compose 配置使用远程镜像
    • 修复磁盘挂载问题(改为读写模式)
    • 添加健康检查配置
    • 完善文档说明
  • 2026-02-13: v1.0.0

    • 初始版本发布
    • 支持 Windows 10 镜像
    • 集成 noVNC Web 访问
    • 支持 VNC 和 RDP 连接
    • 完整的管理脚本集合
    • Git LFS 集成

About

No description, topics, or website provided.