Docker 容器化部署 Windows 记录

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-xAMD-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 版本,无广告,稳定)
– 服务器环境:20222019
– 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

特点
– ✅ 无需客户端,浏览器直接访问
– ✅ 可查看安装进度
– ❌ 画质较低,无音频和剪贴板

image-20260303133821910

方式二:RDP 远程桌面(推荐用于日常使用)

Windows 客户端

# 按 Win+R,输入
mstsc /v:服务器IP:3389

默认凭据
– 用户名:Docker
– 密码:admin

image-20260303133750967

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

📚 参考资料

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇