在 Windows Server 2022 上运行 Docker 容器(特别是原生 Windows 容器),需启用以下核心组件、服务和配置。注意:Windows Server 2022 原生支持 Windows 容器(基于 process 或 hyperv 隔离),但不原生支持 Linux 容器(LCOW);若需运行 Linux 容器,必须借助 WSL2(仅限桌面版 Windows 10/11)或使用虚拟机方案(如 Hyper-V 虚拟机中部署 Linux + Docker),而Windows Server 2022 不推荐也不官方支持 WSL2(WSL2 在 Server SKU 中未启用且不受支持)。
✅ 正确路径:在 Windows Server 2022 上运行 Windows 容器(Windows-based containers),需如下配置:
🔧 一、必需的 Windows 功能(通过 PowerShell 启用)
以管理员身份运行 PowerShell,执行:
# 1. 启用容器功能(核心)
Enable-WindowsOptionalFeature -Online -FeatureName Containers -All -NoRestart
# 2. 启用 Hyper-V(强烈推荐,尤其用于 hyperv 隔离模式、多租户安全场景,且是 Docker Desktop 的依赖)
# 注意:Hyper-V 是可选但高度推荐——它提供更强隔离性(即使对 Windows 容器),并支持 LCOW(已弃用)及未来兼容性
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All -NoRestart
# 3. (可选但推荐)启用“虚拟机平台”(为某些现代容器运行时/兼容性提供支持,如 containerd 1.7+ 的 WCL)
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform -All -NoRestart
# ⚠️ 注意:启用 Hyper-V 和 VirtualMachinePlatform 均需重启系统
Restart-Computer -Force
✅ 关键说明:
Containers功能是绝对必需的(提供containerd、hcs等底层容器运行时支持)。Microsoft-Hyper-V并非 Windows 容器的严格必需项(process隔离可在无 Hyper-V 下运行),但:
hyperv隔离模式必须启用 Hyper-V;- Docker Engine 默认推荐
hyperv隔离(更安全、稳定、与镜像兼容性更好);- 多数生产环境(尤其涉及不同 Windows 版本镜像、或需要内核版本隔离)要求
hyperv隔离;- Docker Desktop for Windows(非 Server 场景)也依赖 Hyper-V。
🐳 二、安装并配置 Docker 引擎(Docker Engine — not Docker Desktop)
⚠️ 重要区别:
- ❌ Docker Desktop for Windows 是为 Windows 10/11 桌面设计,不支持 Windows Server 2022(安装会失败或无法启动)。
- ✅ 必须使用 Docker Engine for Windows Server(即
dockerd作为 Windows 服务运行)。
步骤:
-
下载 Docker Engine(Windows Server 版)
从 Docker Engine for Windows Server 获取.zip包(如docker-24.0.7.zip)。 -
解压并安装为 Windows 服务(管理员 PowerShell):
# 解压到 C:Program FilesDocker Expand-Archive .docker-24.0.7.zip -DestinationPath "$env:ProgramFilesDocker" # 注册为服务(使用 hyperv 隔离,推荐) & "$env:ProgramFilesDockerdockerd.exe" --register-service --experimental --data-root "C:ProgramDataDocker" --exec-opt isolation=hyperv # 启动服务 Start-Service docker -
验证安装:
docker version docker info | findstr "Isolation OSVersion" # 应显示 Isolation: hyperv 或 process,OSVersion: 10.0.xxxx(对应 Windows Server 2022 内核)
⚙️ 三、关键服务状态(自动管理,但需确认运行)
| 服务名称 | 描述 | 启动类型 | 状态要求 |
|---|---|---|---|
Docker |
Docker Engine 主服务(dockerd.exe) |
自动(延迟启动) | ✅ 运行中 |
vmms |
Hyper-V Virtual Machine Management(若启用 Hyper-V) | 自动 | ✅ 运行中 |
hns |
Host Network Service(容器网络必需) | 自动 | ✅ 运行中(由 Containers 功能自动注册) |
vmcompute |
Hyper-V Compute Service(若启用 Hyper-V) | 自动 | ✅ 运行中 |
✅ 可用命令检查:
Get-Service docker, vmms, hns, vmcompute | Select Name, Status, StartType
🌐 四、网络与存储准备(生产建议)
- 网络:默认使用
nat网络(由 HNS 自动创建)。如需高级网络(如transparent、l2bridge),需手动配置并确保物理网卡/交换机支持。 - 存储驱动:Windows Server 2022 推荐使用
windowsfilter(默认),避免使用已弃用的aufs或btrfs。 - 磁盘空间:确保
C:ProgramDataDocker(或自定义--data-root)有充足空间(镜像/层/卷占用大)。
🚫 五、明确不支持或不推荐项
| 项目 | 说明 |
|---|---|
| Docker Desktop | ❌ 不支持 Windows Server 2022(仅限 Windows 10/11 Pro/Enterprise) |
| Linux 容器(LCOW) | ⚠️ 已于 Docker 20.10+ 正式弃用;Windows Server 2022 无官方支持。替代方案:在 Hyper-V 虚拟机中部署 Linux + Docker。 |
| WSL2 backend | ❌ Windows Server 2022 未包含/不支持 WSL2(无 wsl.exe,无法启用 wsl --install) |
| Docker Swarm 本地集群(跨主机) | ✅ 支持,但需额外配置 TLS、网络(Overlay 网络需 VXLAN/Windows SDN)和防火墙端口(2377, 7946, 4789) |
✅ 快速验证清单(管理员 PowerShell)
# 1. 检查必需功能
Get-WindowsOptionalFeature -Online -FeatureName Containers, Microsoft-Hyper-V | Where State -eq 'Enabled'
# 2. 检查服务
Get-Service docker, hns, vmms | Select Name, Status
# 3. 运行测试容器(Windows Nano Server 镜像)
docker run --rm mcr.microsoft.com/windows/nanoserver:ltsc2022 cmd /c "echo Hello from Windows Server 2022!"
# 4. 查看隔离模式
docker info | sls "Isolation|Kernel"
| ✅ 总结:最小可行配置 | 组件 | 是否必需 | 说明 |
|---|---|---|---|
Containers Windows 功能 |
✅ 是 | 核心容器运行时(HCS、containerd) | |
Microsoft-Hyper-V |
✅ 强烈推荐(生产必备) | 支持 hyperv 隔离、安全增强、镜像兼容性 |
|
Docker Engine(dockerd 服务) |
✅ 是 | 替代 Docker Desktop 的唯一官方方式 | |
hns / vmcompute 服务 |
✅ 自动启用 | 无需手动操作,但需确保运行 |
如需进一步协助(如配置私有 Registry、Kubernetes(AKS-HCI / MicroK8s on Windows)、或 Windows 容器 CI/CD 最佳实践),欢迎继续提问! 🐋
CLOUD云计算