Docker 容器化部署 Windows 记录
📋 项目背景
随着公司生产26年开始国产化替代要求推进,需要将现有 x86 环境逐步迁移至国产 ARM 架构。本文档记录在以下两种环境中通过 Docker 容器部署 Windows 的完整流程:
- 国产 ARM 环境:
华为鲲鹏 920 (HUAWEI Kunpeng 920) - 传统 x86 环境:
Intel Xeon Silver 4214
项目地址:
– x86 版本:dockur/windows
– ARM 版本:dockur/windows-arm
🔍 环境检查与准备
1. 检查虚拟化支持
x86 环境检查(Intel/AMD)
# 查看 CPU 架构和虚拟化支持
lscpu | grep -E "Architecture|Virtualization"
# 输出示例:
# Architecture: x86_64
# Virtualization: VT-x ✅ 关键:必须有 VT-x (Intel) 或 AMD-V (AMD)
# 检查 KVM 模块是否加载
lsmod | grep kvm
# 输出示例:
# kvm_intel 188740 10
# kvm 637289 1 kvm_intel
# 验证 KVM 可用性(推荐)
sudo apt install cpu-checker -y # Debian/Ubuntu
sudo yum install qemu-kvm -y # CentOS/RHEL
sudo kvm-ok
# 期望输出:INFO: /dev/kvm exists
# KVM acceleration can be used
# 检查 QEMU 相关包
rpm -qa | grep qemu # CentOS/RHEL
dpkg -l | grep qemu # Debian/Ubuntu
关键指标:
– ✅ Virtualization: VT-x 或 AMD-V 存在
– ✅ lsmod | grep kvm 有输出
– ✅ /dev/kvm 设备文件存在
ARM 环境检查(鲲鹏/飞腾)
# 查看 ARM 架构信息
lscpu | grep -E "架构|Architecture|型号名称|Model name"
# 输出示例:
# 架构: aarch64
# 型号名称: Kunpeng-920
# 检查 KVM 支持(ARM 环境通常不支持)
lsmod | grep kvm
# 如果无输出,说明不支持 KVM 加速
# 检查虚拟化能力
cat /proc/cpuinfo | grep -E "Features|flags" | grep -i "virt"
⚠️ ARM 环境重要提示:
– ❌ 鲲鹏 920 等 ARM 芯片通常不支持 KVM 加速
– ⚠️ 需要使用 QEMU 纯模拟模式运行 x86 Windows
– 🐌 性能约为原生的 5-10%,安装耗时 1-2 小时
– 💡 建议:仅用于测试验证,生产环境推荐 ARM 原生系统
2. 软件兼容性检查
| 宿主机系统 | Docker CLI | Docker Desktop | KVM 加速 | 推荐镜像 |
|---|---|---|---|---|
| Linux x86_64 | ✅ | ❌ | ✅ | dockurr/windows |
| Linux ARM64 | ✅ | ❌ | ❌ | dockurr/windows-arm |
| Windows 11 | ✅ | ✅ | ❌ | dockurr/windows |
| Windows 10 | ✅ | ✅ | ❌ | dockurr/windows |
🐳 Docker 安装与存储迁移
为什么必须迁移存储路径?
问题:默认 Docker 数据存储在 /var/lib/docker,根目录通常只有 20-50GB
风险:Windows 镜像 (6-7GB) + 虚拟磁盘 (50-256GB) = 轻松爆盘!
解决:将 Docker 数据迁移到大容量数据盘
存储迁移步骤
# 1. 停止 Docker 服务
sudo systemctl stop docker
# 2. 创建新存储目录(确保分区有足够空间,建议 200GB+)
sudo mkdir -p /data/docker-data
# 3. 迁移现有数据(保留权限)
# 方法一:使用 rsync(推荐,可断点续传)
sudo rsync -aP /var/lib/docker/ /data/docker-data/
# 方法二:使用 cp(简单直接)
sudo cp -rp /var/lib/docker/* /data/docker-data/
# 4. 备份原配置(可选)
sudo cp /etc/docker/daemon.json /etc/docker/daemon.json.bak
# 5. 修改 Docker 配置
sudo tee /etc/docker/daemon.json > /dev/null <<EOF
{
"data-root": "/data/docker-data",
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "3"
}
}
EOF
# 6. 重启 Docker 并验证
sudo systemctl daemon-reload
sudo systemctl start docker
sudo systemctl status docker
# 7. 验证新路径生效
docker info | grep "Docker Root Dir"
# 期望输出:Docker Root Dir: /data/docker-data
# 8. 确认容器正常后,删除旧数据(谨慎操作!)
# sudo rm -rf /var/lib/docker
⚙️ Docker Compose 配置详解
配置文件:docker-compose.yaml
根据宿主机架构选择对应配置:
方案一:x86_64 环境(Intel/AMD,支持 KVM 加速)
version: "3"
services:
windows:
image: dockurr/windows:latest
container_name: windows
environment:
VERSION: "11" # Windows 版本(见版本列表)
RAM_SIZE: "8G" # 内存分配(Win11 建议 8G+)
CPU_CORES: "4" # CPU 核心数
DISK_SIZE: "64G" # 虚拟磁盘大小(默认 64G)
USERNAME: "Docker" # 默认用户名
PASSWORD: "admin" # 默认密码(生产环境务必修改!)
LANGUAGE: "Chinese" # 系统语言
KEYBOARD: "zh-CN" # 键盘布局
REGION: "zh-CN" # 区域设置
devices:
- /dev/kvm # KVM 硬件加速(必须!)
- /dev/net/tun # 网络隧道
cap_add:
- NET_ADMIN # 网络管理权限
ports:
- "8006:8006" # Web 控制台
- "3389:3389/tcp" # RDP 远程桌面 TCP
- "3389:3389/udp" # RDP 远程桌面 UDP
volumes:
- ./windows:/storage # 数据持久化(必须!)
- ./shared:/shared # 宿主机共享文件夹
restart: unless-stopped
stop_grace_period: 2m # 优雅停机时间
方案二:ARM64 环境(鲲鹏/飞腾,无 KVM 加速)
version: "3"
services:
windows:
image: dockurr/windows-arm:latest
container_name: windows
environment:
VERSION: "11" # Windows 版本
RAM_SIZE: "8G" # 内存分配
CPU_CORES: "4" # CPU 核心数
DISK_SIZE: "64G" # 虚拟磁盘大小
USERNAME: "Docker" # 默认用户名
PASSWORD: "admin" # 默认密码
LANGUAGE: "Chinese" # 系统语言
KEYBOARD: "zh-CN" # 键盘布局
REGION: "zh-CN" # 区域设置
# ⚠️ ARM 环境关键配置
# KVM: "N" # 可选,默认自动检测
devices:
# - /dev/kvm # ARM 通常不支持,注释掉
- /dev/net/tun # 网络隧道
cap_add:
- NET_ADMIN # 网络管理权限
ports:
- "8006:8006" # Web 控制台
- "3389:3389/tcp" # RDP 远程桌面 TCP
- "3389:3389/udp" # RDP 远程桌面 UDP
volumes:
- ./windows:/storage # 数据持久化
- ./shared:/shared # 共享文件夹
restart: unless-stopped
stop_grace_period: 2m
📦 Windows 版本列表
| VERSION 值 | 版本名称 | 大小 | 推荐场景 |
|---|---|---|---|
11 |
Windows 11 Pro | 6.8 GB | 通用桌面 |
11l |
Windows 11 LTSC | 4.7 GB | 长期支持,精简版 ✅ |
11e |
Windows 11 Enterprise | 4.3 GB | 企业环境 |
10 |
Windows 10 Pro | 3.5 GB | 兼容性好 |
10l |
Windows 10 LTSC | 4.1 GB | 稳定版 |
2022 |
Windows Server 2022 | 6.0 GB | 服务器环境 |
2019 |
Windows Server 2019 | 5.3 GB | 服务器环境 |
推荐:
– 桌面环境:11l (LTSC 版本,无广告,稳定)
– 服务器环境:2022 或 2019
– ARM 环境:10l (更轻量,安装更快)
自定义 ISO 镜像
environment:
VERSION: "https://example.com/custom.iso" # 方式一:URL 下载
volumes:
- ./custom.iso:/boot.iso # 方式二:本地文件
多磁盘配置
environment:
DISK_SIZE: "64G" # 主磁盘(C盘)
DISK2_SIZE: "100G" # 数据盘 D
DISK3_SIZE: "200G" # 数据盘 E
volumes:
- ./windows:/storage
- ./disk2:/storage2
- ./disk3:/storage3
启动安装
# 启动容器
docker-compose up -d
# 查看日志情况
docker-compose logs -f
🚀 部署流程
1. 创建项目目录
# 创建工作目录
mkdir -p ~/docker-windows && cd ~/docker-windows
# 创建必要的子目录
mkdir -p windows shared oem
2. 编写 docker-compose.yaml
根据你的环境选择对应配置(见上文”配置文件”章节)
3. 启动容器
# 启动容器(后台运行)
docker-compose up -d
# 实时查看日志
docker-compose logs -f
# 查看容器状态
docker-compose ps
[root@localhost windows]# docker-compose logs -f
windows | ❯ Starting Windows for Docker v5.14...
windows | ❯ For support visit https://github.com/dockur/windows
windows | ❯ CPU: Intel Xeon Silver 4214 | RAM: 100/126 GB | DISK: 187 GB (xfs) | KERNEL: 3.10.0-1160.el7.x86_64...
windows |
windows | ❯ Extracting local ISO image...
windows | ❯ Detecting version from ISO image...
windows | ❯ Detected: Windows 10 Pro (Chinese)
windows | ❯ Adding drivers to image...
windows | ❯ Adding win10x64.xml for automatic installation...
windows | ❯ Building Windows 10 image...
windows | ❯ Creating a 50 GB growable disk image in raw format...
windows | ❯ Booting Windows securely using QEMU v10.0.6...
windows | BdsDxe: skipped Boot0002 "UEFI QEMU QEMU HARDDISK " from PciRoot(0x0)/Pci(0xA,0x0)/Scsi(0x0,0x0)
windows | BdsDxe: loading Boot0001 "UEFI QEMU DVD-ROM QM00013 " from PciRoot(0x0)/Pci(0x5,0x0)/Sata(0x0,0xFFFF,0x0)
windows | BdsDxe: starting Boot0001 "UEFI QEMU DVD-ROM QM00013 " from PciRoot(0x0)/Pci(0x5,0x0)/Sata(0x0,0xFFFF,0x0)
windows | ❯ Windows started successfully, visit http://127.0.0.1:8006/ to view the screen...
windows | BdsDxe: loading Boot0003 "Windows Boot Manager" from HD(1,GPT,5E0EA4AA-D610-4AED-A1B6-91004BEEA4E6,0x800,0x40000)/\EFI\Microsoft\Boot\bootmgfw.efi
windows | BdsDxe: starting Boot0003 "Windows Boot Manager" from HD(1,GPT,5E0EA4AA-D610-4AED-A1B6-91004BEEA4E6,0x800,0x40000)/\EFI\Microsoft\Boot\bootmgfw.efi
windows | BdsDxe: loading Boot0003 "Windows Boot Manager" from HD(1,GPT,5E0EA4AA-D610-4AED-A1B6-91004BEEA4E6,0x800,0x40000)/\EFI\Microsoft\Boot\bootmgfw.efi
windows | BdsDxe: starting Boot0003 "Windows Boot Manager" from HD(1,GPT,5E0EA4AA-D610-4AED-A1B6-91004BEEA4E6,0x800,0x40000)/\EFI\Microsoft\Boot\bootmgfw.efi
windows | BdsDxe: loading Boot0003 "Windows Boot Manager" from HD(1,GPT,5E0EA4AA-D610-4AED-A1B6-91004BEEA4E6,0x800,0x40000)/\EFI\Microsoft\Boot\bootmgfw.efi
windows | BdsDxe: starting Boot0003 "Windows Boot Manager" from HD(1,GPT,5E0EA4AA-D610-4AED-A1B6-91004BEEA4E6,0x800,0x40000)/\EFI\Microsoft\Boot\bootmgfw.efi
windows | ❯ Shutdown completed!
windows | ❯ Starting Windows for Docker v5.14...
windows | ❯ For support visit https://github.com/dockur/windows
windows | ❯ CPU: Intel Xeon Silver 4214 | RAM: 100/126 GB | DISK: 178 GB (xfs) | KERNEL: 3.10.0-1160.el7.x86_64...
windows |
windows | ❯ Booting Windows securely using QEMU v10.0.6...
windows | BdsDxe: loading Boot0003 "Windows Boot Manager" from HD(1,GPT,5E0EA4AA-D610-4AED-A1B6-91004BEEA4E6,0x800,0x40000)/\EFI\Microsoft\Boot\bootmgfw.efi
windows | BdsDxe: starting Boot0003 "Windows Boot Manager" from HD(1,GPT,5E0EA4AA-D610-4AED-A1B6-91004BEEA4E6,0x800,0x40000)/\EFI\Microsoft\Boot\bootmgfw.efi
windows | ❯ Windows started successfully, visit http://127.0.0.1:8006/ to view the screen...
4. 访问 Windows
方式一:Web 控制台(推荐用于安装阶段)
http://服务器IP:8006
特点:
– ✅ 无需客户端,浏览器直接访问
– ✅ 可查看安装进度
– ❌ 画质较低,无音频和剪贴板

方式二:RDP 远程桌面(推荐用于日常使用)
Windows 客户端:
# 按 Win+R,输入
mstsc /v:服务器IP:3389
默认凭据:
– 用户名:Docker
– 密码:admin

5. 等待安装完成
x86 环境(有 KVM 加速):
– 安装时间:15-30 分钟
– 性能:接近原生
ARM 环境(无 KVM 加速):
– 安装时间:1-2 小时 ⏰
– 性能:原生的 5-10%
– 建议:通过 Web 控制台观察进度,耐心等待
安装完成标志:
– Web 控制台显示 Windows 桌面
– RDP 端口 3389 可连接
– 日志显示 “Windows started successfully”
📊 性能对比测试
| 环境 | CPU | KVM 加速 | 安装耗时 | 启动时间 | 性能表现 |
|---|---|---|---|---|---|
| Intel Xeon Silver 4214 | x86_64 | ✅ | 20 分钟 | 30 秒 | 95% 原生 |
| HUAWEI Kunpeng 920 | ARM64 | ❌ | 90 分钟 | 5 分钟 | 8% 原生 |
结论:
– ✅ x86 环境:生产可用,性能优秀
– ⚠️ ARM 环境:仅适合测试验证,不推荐生产使用
🛠️ 常用管理命令
# 查看容器状态
docker-compose ps
# 查看实时日志
docker-compose logs -f
# 停止容器(优雅关机)
docker-compose stop
# 启动容器
docker-compose start
# 重启容器
docker-compose restart
# 删除容器(保留数据)
docker-compose down
# 删除容器和数据(危险操作!)
docker-compose down -v
rm -rf ./windows
# 进入容器调试
docker exec -it windows bash
# 查看资源占用
docker stats windows
# 备份虚拟磁盘
tar -czf windows-backup-$(date +%Y%m%d).tar.gz ./windows
🔧 故障排查
问题 1:RDP 无法连接
症状:
The client could not connect to the remote computer.
Remote connections might not be enabled...
原因:
– Windows 还在安装中,RDP 服务未启动
– 安装失败,反复重启
– 防火墙阻止端口
解决方案:
# 1. 检查容器状态
docker-compose ps
# 2. 查看日志确认安装进度
docker-compose logs --tail=50
# 3. 访问 Web 控制台查看实际状态
http://服务器IP:8006
# 4. 检查端口监听
netstat -tlnp | grep 3389
# 5. 检查防火墙(CentOS/RHEL)
sudo firewall-cmd --list-ports
sudo firewall-cmd --add-port=3389/tcp --permanent
sudo firewall-cmd --reload
问题 2:KVM acceleration not available
症状:
Warning: KVM acceleration is disabled, this will cause the machine
to run about 10 times slower!
原因:
– BIOS 未开启虚拟化
– 容器未映射 /dev/kvm
– ARM 架构不支持 KVM
解决方案:
# 检查虚拟化支持
lscpu | grep Virtualization
# 期望输出:Virtualization: VT-x 或 AMD-V
# 检查 KVM 设备
ls -l /dev/kvm
# 期望输出:crw-rw-rw- 1 root kvm 10, 232 ...
# 检查 KVM 模块
lsmod | grep kvm
# 如果没有输出,加载模块
sudo modprobe kvm
sudo modprobe kvm_intel # Intel CPU
sudo modprobe kvm_amd # AMD CPU
# 确保 docker-compose.yaml 包含
devices:
- /dev/kvm
ARM 环境:无法解决,属于架构限制,只能接受低性能
问题 3:磁盘空间不足
症状:
Error: No space left on device
解决方案:
# 检查磁盘使用
df -h
# 清理 Docker 缓存
docker system prune -a
# 检查 Docker 数据目录
du -sh /var/lib/docker
du -sh /data/docker-data
# 扩展虚拟磁盘(在 Windows 内部操作)
# 1. 修改 docker-compose.yaml
environment:
DISK_SIZE: "128G" # 从 64G 扩展到 128G
# 2. 重启容器
docker-compose restart
# 3. 在 Windows 中打开"磁盘管理",扩展 C 盘分区
问题 4:安装卡住不动
症状:
– Web 控制台黑屏或蓝屏
– 日志长时间无输出
解决方案:
# 1. 等待 10 分钟(ARM 环境可能需要更久)
# 2. 检查容器资源
docker stats windows
# 3. 重启容器
docker-compose restart
# 4. 如果仍然卡住,重新初始化
docker-compose down
rm -rf ./windows/*
docker-compose up -d
问题 5:中文乱码
症状:
– 系统界面显示英文
– 输入法无法切换中文
解决方案:
# 确保 docker-compose.yaml 包含
environment:
LANGUAGE: "Chinese"
KEYBOARD: "zh-CN"
REGION: "zh-CN"
💡 最佳实践
1. 资源分配建议
| Windows 版本 | 最小内存 | 推荐内存 | 最小磁盘 | 推荐磁盘 |
|---|---|---|---|---|
| Windows 11 | 4GB | 8GB | 50GB | 100GB |
| Windows 10 | 2GB | 4GB | 40GB | 80GB |
| Server 2022 | 2GB | 8GB | 50GB | 120GB |
2. 安全加固
environment:
# 修改默认密码
USERNAME: "admin"
PASSWORD: "YourStrongPassword123!"
# 限制端口暴露(仅本地访问)
ports:
- "127.0.0.1:8006:8006"
- "127.0.0.1:3389:3389"
3. 性能优化
# x86 环境优化配置
environment:
RAM_SIZE: "16G" # 增加内存
CPU_CORES: "8" # 增加 CPU
DISK_SIZE: "256G" # 增加磁盘
VGA: "virtio-gpu" # 启用虚拟显卡(安装后)
# 使用 SSD 存储
volumes:
- /ssd/windows:/storage # 将数据存储在 SSD