在Windows Server 2022上运行Docker容器需要启用哪些核心组件和服务?

在 Windows Server 2022 上运行 Docker 容器(尤其是原生 Windows 容器),需启用以下核心组件、服务和配置。注意:Windows Server 2022 原生支持 Windows 容器(基于 containerdhcs),但不直接支持 Linux 容器(LCOW);如需运行 Linux 容器,必须启用 WSL2 后端(仅限 Windows Server 2022 预览版/Insider Build 或特定更新后的正式版,且生产环境不推荐),或使用 Docker Desktop for Windows(仅限桌面系统,不支持 Server) —— 因此,标准生产场景下,Windows Server 2022 仅推荐运行 Windows 容器

以下是启用 Windows 容器所必需的核心组件和服务:


✅ 一、必需的 Windows 功能(通过 PowerShell 启用)

管理员身份运行 PowerShell,执行:

# 1. 启用容器功能(核心)
Enable-WindowsOptionalFeature -Online -FeatureName containers -All -NoRestart

# 2. 启用 Hyper-V(Windows 容器依赖 Hyper-V 隔离模式;即使使用 process 隔离,也建议启用以支持完整功能)
# 注意:Hyper-V 在物理服务器上需 BIOS 中启用虚拟化(Intel VT-x / AMD-V)和 SLAT
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All -NoRestart

# 3. (可选但强烈推荐)启用虚拟机平台(为未来兼容性及 WSL2/容器增强隔离做准备)
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform -All -NoRestart

⚠️ 注意:

  • containers 是基础容器运行时支持(含 hcsshimhcs 等)。
  • Microsoft-Hyper-V 不是绝对强制(process-isolated 容器可不依赖),但 production 环境强烈推荐启用,以支持更安全的 Hyper-V 隔离(--isolation=hyperv)和多租户场景。
  • 所有启用后需 重启服务器

✅ 二、必需的服务(自动启动)

以下服务由 Windows 容器功能自动安装并设为自启(无需手动配置,但需确认状态):

服务名称 显示名称 说明
vmms Hyper-V Virtual Machine Management Hyper-V 管理服务(启用 Hyper-V 后必需)
hns Host Network Service 提供容器网络(vSwitch、NAT、Overlay 等)
vmcompute Hyper-V Compute Service 容器运行时计算引擎(HCS 的核心服务)
docker Docker Engine(若安装 Docker CE) 注意:Docker CE 不再官方支持 Windows Server 2022(自 Docker 20.10.19+ 起已弃用 Windows Server 支持)

🔴 关键更新(2023 年起重大变更):
Docker Inc. 已于 2023 年正式终止对 Windows Server 的 Docker Engine(dockerd)支持
替代方案:使用 Microsoft 原生容器运行时 containerd + ctr / crictl,或通过 Kubernetes(如 AKS-HCI、Kubernetes on Windows)管理容器。
生产推荐路径:使用 containerd 直接运行 Windows 容器(微软官方支持,集成于 Windows Server 2022)


✅ 三、必需的运行时与工具(手动安装)

1. 安装 containerd(推荐方式)

Windows Server 2022 自带 containerd(位于 C:Program Filescontainerd),但需配置并启动:

# 初始化 containerd(首次运行)
C:Program Filescontainerdcontainerd.exe --register-service
Start-Service containerd

# 验证
ctr version   # 应返回 containerd 版本(如 v1.7.x)

containerd 是 CNCF 毕业项目,Windows Server 2022 内置支持,是当前 Microsoft 推荐的生产级容器运行时

2. 安装 CNI 插件(用于网络)

Windows 容器默认使用内置 HNS(Host Network Service),但若需高级网络(如 Calico、Cilium),需部署对应 CNI 插件(需适配 Windows)。

3. 拉取 Windows 基础镜像(必需)

# 使用 ctr 拉取(示例:Windows Server Core 2022)
ctr -n k8s.io image pull mcr.microsoft.com/windows/servercore:ltsc2022

# 或使用 docker(仅当仍安装 Docker CE 时,不推荐)
# docker pull mcr.microsoft.com/windows/servercore:ltsc2022

📌 镜像源:所有官方 Windows 镜像均托管于 MCR(Microsoft Container Registry)mcr.microsoft.com/...


✅ 四、关键系统配置要求

项目 要求 验证命令
操作系统版本 Windows Server 2022(Build 20348+),建议最新 LTSC 更新 winver(Get-ComputerInfo).WindowsBuildLabEx
内核隔离支持 BIOS 中启用:Intel VT-x / AMD-V + SLAT(Nested Paging) systeminfo | findstr "Hyper-V Requirements"
存储驱动 默认使用 windowsfilter(推荐);不支持 overlay2(Linux 专用)
容器存储位置 默认 %ProgramData%docker(若使用 containerd,则为 %ProgramData%containerd
防火墙规则 若需容器端口映射,需开放对应入站规则(如 NAT 网络) Get-NetFirewallRule -DisplayName "*container*"

❌ 不再支持/不推荐的组件

组件 状态 说明
Docker Engine (dockerd.exe) ⚠️ 已弃用 Docker Inc. 自 2023 年起停止 Windows Server 支持;社区无维护;存在安全风险
Docker Desktop ❌ 不支持 仅限 Windows 10/11 Pro/Enterprise 桌面版,不可安装于 Windows Server
LCOW(Linux Containers on Windows) ❌ 已移除 Windows Server 2022 不支持;仅旧版 Windows 10/Server 2019 试验性支持
Windows Subsystem for Linux (WSL1) ❌ 无关 WSL1 不提供容器支持;WSL2 仅适用于桌面系统

✅ 推荐生产架构(Windows Server 2022)

graph LR
A[Windows Server 2022] --> B[Hyper-V + Containers Feature]
B --> C[containerd 运行时]
C --> D[HNS 网络服务]
D --> E[Windows 容器<br>(servercore/nanoserver)]
C --> F[Kubernetes(如 AKS-HCI 或 kubeadm)]

最佳实践组合

  • 运行时:containerd(内置,稳定,受微软支持)
  • 编排:Kubernetes(使用 kubeadm 或 AKS-HCI)
  • 镜像:MCR (mcr.microsoft.com/windows/...)
  • 隔离:--isolation=process(轻量)或 --isolation=hyperv(安全)

✅ 快速验证脚本(PowerShell)

# 检查功能是否启用
"Containers:" + (Get-WindowsOptionalFeature -Online -FeatureName containers).State
"Hyper-V:" + (Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V).State

# 检查服务状态
Get-Service vmms, hns, vmcompute, containerd | Select Name, Status, StartType

# 检查 containerd 是否就绪
if (Get-Command ctr -ErrorAction SilentlyContinue) { ctr version } else { Write-Warning "ctr not found" }

# 尝试运行一个测试容器(需先拉取镜像)
# ctr -n default run --rm -t mcr.microsoft.com/windows/nanoserver:ltsc2022 test-ping ping -n 1 127.0.0.1

如需进一步帮助,例如:

  • 配置 containerdconfig.toml(启用镜像仓库、X_X、registry mirrors)
  • 在 Kubernetes 中添加 Windows Node
  • 构建/推送 Windows 容器镜像(使用 docker buildxkaniko
  • 设置 Windows 容器 CI/CD(GitHub Actions / Azure Pipelines)

欢迎随时提出,我可以提供详细配置示例 👍


✅ 总结一句话:
Windows Server 2022 运行容器 = 启用 containers + Hyper-V 功能 → 重启 → 使用内置 containerd 运行 Windows 容器(非 Docker Engine),这是当前唯一受支持、安全、生产就绪的路径。

未经允许不得转载:CLOUD云枢 » 在Windows Server 2022上运行Docker容器需要启用哪些核心组件和服务?