在 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 内置的容器平台基础(含 containerd、hcs、vmcompute 等) |
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(已弃用);更推荐直接使用 ctr 或 crictl |
🟡 可选(非必需,但提升体验) |
✅ 推荐操作步骤(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命令默认不可用。若需dockerCLI:
- 可下载 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 集成),欢迎继续提问!
云服务器