奋斗
努力

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

云计算

在 Windows Server 2022 上运行 Docker 容器,官方已不再推荐或支持原生 Docker Engine(Docker Desktop 或 Docker CE),因为:

Docker Inc. 自 2017 年起停止为 Windows Server 提供 Docker Engine 的独立安装包
Windows Server 2022 原生集成的是 Microsoft 的容器运行时——containerd + Windows Containers(基于 Hyper-V 或 Process 隔离)
Docker CLI 工具(如 docker 命令)可通过 Docker Desktop for Windows 使用,但 Docker Desktop 不支持 Windows Server(仅支持 Windows 10/11 Pro/Enterprise)


✅ 正确路径:使用 Windows Server 原生容器平台(Microsoft 官方支持方案)

要在 Windows Server 2022 上安全、稳定、合规地运行容器,应启用以下核心组件与服务(基于 Windows 容器 + containerd):

组件/服务 说明 启用方式 必需性
Containers 功能 Windows 内置的容器平台基础(含 containerdhcsvmcompute 等) Install-WindowsFeature -Name Containers ✅ 必需
Hyper-V(可选但强烈推荐) 提供 Hyper-V 隔离模式(更强安全性,支持 Linux 容器 via WSL2?❌ 不适用;但对 Windows 容器提供内核级隔离)
⚠️ 注意:WS2022 支持 Hyper-V 隔离Process 隔离,但 Linux 容器(LCOW)已被弃用且不支持
Install-WindowsFeature -Name Hyper-V -IncludeManagementTools -Restart ⚠️ 推荐(尤其生产环境)
若仅需轻量级 Windows 容器,可省略(用 Process 隔离)
Windows Subsystem for Linux 2 (WSL2) 不适用于 Windows Server —— WSL2 是面向桌面版 Windows 的功能,Windows Server 2022 不支持 WSL2,也无法运行 Linux 容器原生。 不可用 ❌ 不适用
containerd 服务 Windows Server 2022 默认内置并由 Containers 功能自动部署和管理(位于 C:Program Filescontainerd),无需手动安装 Docker Engine 自动启用(依赖 Containers 功能) ✅ 必需(底层运行时)
HCS(Host Compute Service) Windows 容器核心服务,管理容器生命周期、网络、存储等 自动启动(hcsvmms / vmcompute 服务) ✅ 必需
Docker CLI(可选工具层) 可通过 Docker CLI for Windows Server(即 docker.exe 二进制)与本地 containerd 通信(需配置 DOCKER_HOST=npipe:////./pipe//containerd-containerd
✅ 微软提供兼容 CLI(非 Docker Inc. 官方发行,但社区广泛使用)
下载 docker-cli-windows 或使用 PowerShell 模块 DockerMsftProvider(已弃用);更推荐直接使用 ctrcrictl 🟡 可选(非必需,但提升体验)

✅ 推荐操作步骤(PowerShell,以管理员身份运行):

# 1️⃣ 启用 Containers 功能(自动拉起 containerd & HCS)
Install-WindowsFeature -Name Containers -IncludeManagementTools -Restart

# 2️⃣ (可选)启用 Hyper-V 隔离支持(需重启)
Install-WindowsFeature -Name Hyper-V -IncludeManagementTools -Restart

# 3️⃣ 重启后验证
Get-Service vmms, vmcompute, hcsvmms, containerd | Select-Object Name, Status, StartType

# 4️⃣ 拉取并运行一个 Windows 容器示例(使用内置 containerd + ctr 工具)
# 注意:WS2022 自带 ctr(containerd CLI),位于 C:WindowsSystem32ctr.exe
ctr --namespace default images pull mcr.microsoft.com/windows/servercore:ltsc2022
ctr --namespace default run --rm -t mcr.microsoft.com/windows/servercore:ltsc2022 test-ping ping 127.0.0.1

💡 提示:docker 命令默认不可用。若需 docker CLI:

  • 可下载 Docker CLI binary(如 docker-24.0.0.zip),解压后配置:
    $env:DOCKER_HOST="npipe:////./pipe//containerd-containerd"
    # 然后运行 .docker.exe info
  • 但注意:该 CLI 仅作为客户端,不包含 daemon,完全依赖 Windows 原生 containerd

❌ 不支持/已废弃的方案(请避免):

方案 原因
Docker Desktop for Windows ❌ 不支持任何 Windows Server 版本(仅限 Win10/11)
Docker Engine(dockerd.exe)安装包 ❌ Docker Inc. 自 Docker CE 19.03+ 起已移除 Windows Server 支持
Linux 容器(LCOW) ❌ Windows Server 2022 中已彻底移除 LCOW 支持(自 2018 年起逐步弃用)
WSL2 + Docker Desktop ❌ WSL2 不可在 Windows Server 上安装

✅ 替代现代方案(如需 Linux 容器):

若你必须运行 Linux 容器,推荐以下企业级方案:

  • Azure Container Instances (ACI)Azure Kubernetes Service (AKS)
  • 在 Windows Server 上部署 Linux 虚拟机(Hyper-V VM)+ 在其中运行 Docker Engine
  • 使用 Podman for Windows(实验性,通过 WSL2?→ 不适用 Server)→ 实际仍需 Linux VM

总结:Windows Server 2022 容器核心依赖清单

类别 组件 是否必需
系统功能 Containers Windows Feature ✅ 是
隔离支持 Hyper-V(用于 Hyper-V 隔离) ⚠️ 推荐(非绝对必需)
运行时服务 containerd, vmcompute, hcsvmms ✅ 是(自动启用)
CLI 工具 ctr(内置)、crictl、或手动部署 docker.exe(客户端) 🟡 否(可选)
镜像源 Microsoft Container Registry (mcr.microsoft.com) ✅ 是(唯一官方支持源)

如需进一步帮助(如配置容器网络、存储、Kubernetes 集成(via AKS-HCI 或 MicroK8s)或 CI/CD 集成),欢迎继续提问!

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