在 Windows Server 2022 上运行 Docker 容器(尤其是原生 Windows 容器),需启用以下核心组件、服务和配置。注意:Windows Server 2022 原生支持 Windows 容器(基于 Windows 内核的容器),但不原生支持 Linux 容器(LCOW);若需运行 Linux 容器,必须通过 WSL2 + Docker Desktop for Windows(仅限桌面版)或 Docker Engine on WSL2(需额外配置),而Windows Server 2022 不支持 Docker Desktop(Docker Desktop 是为 Windows 10/11 桌面系统设计的,非服务器环境)。因此,以下内容聚焦于 Windows Server 2022 上官方推荐且生产就绪的方式:使用 Docker Engine 运行 Windows 容器。
✅ 一、必需的核心组件(通过 PowerShell 启用)
1. Containers 功能(核心)
替代旧版 "Container" 功能(Windows Server 2016/2019),是 Windows Server 2022 中运行容器的基础平台。
# 以管理员身份运行 PowerShell Install-WindowsFeature -Name Containers✅ 此功能自动启用:
Hyper-V(仅当使用process隔离时可选,但hyperv隔离强制依赖 Hyper-V)Microsoft-Hyper-V(若未启用,且计划使用hyperv隔离模式,则必须启用)- 相关内核驱动(如
vmcompute,vmms等)💡 注意:Windows Server 2022 的 Containers 功能 默认要求启用 Hyper-V(尤其对
hyperv隔离至关重要),即使运行process隔离容器,也建议启用 Hyper-V 以获得最佳兼容性与安全性。
2. Hyper-V 功能(强烈推荐启用)
Install-WindowsFeature -Name Hyper-V -IncludeManagementTools -Restart
- ✅ 必须启用才能使用
hyperv隔离模式(更安全、支持多租户、与 Linux 容器运行时兼容性更好)。 - ⚠️ 若仅使用
process隔离(轻量、共享内核),理论上可不启用 Hyper-V,但 Windows Server 2022 文档明确要求 Hyper-V 已启用(例如dockerd启动时检查vmcompute服务,该服务由 Hyper-V 提供)。 - 🔒 生产环境强烈推荐
hyperv隔离(隔离性更强,避免进程级逃逸风险)。
3. Windows Subsystem for Linux (WSL) —— 仅当需要 Linux 容器时(非原生支持)
⚠️ 重要澄清:
- Windows Server 2022 不支持 Docker Desktop(无 GUI,且未获微软/Docker 官方支持)。
- 若需运行 Linux 容器,唯一可行方案是:
✅ 启用 WSL2 + 手动安装 Docker Engine inside WSL2(即“Docker in WSL2”模式),但这属于社区实践,非 Microsoft 官方生产推荐路径,且需额外配置 systemd、cgroup v2、网络桥接等,复杂度高、维护成本大。
❌ 不推荐用于生产环境;微软官方建议在 Windows Server 上仅运行 Windows 容器。
✅ 结论:Windows Server 2022 的标准、受支持、生产就绪场景 = Windows 容器 + Containers + Hyper-V
✅ 二、必需的服务(自动启动)
启用 Containers 和 Hyper-V 后,以下关键服务将被安装并设为自动启动:
| 服务名 | 描述 | 启动类型 | 是否必需 |
|---|---|---|---|
vmms (Virtual Machine Management Service) |
Hyper-V 核心管理服务 | Automatic | ✅(若启用 Hyper-V) |
vmcompute |
Windows 容器运行时后端(containerd 与 hcs 交互的桥梁) |
Automatic | ✅(绝对必需) |
Docker(或 MobyEngine) |
Docker Engine 服务(需手动安装) | Automatic | ✅(需后续安装) |
🔍
vmcompute是 Windows 容器架构的核心——它实现 Host Compute Service (HCS),为containerd提供容器生命周期管理能力。
✅ 三、必需的软件安装(非 Windows 功能,需手动部署)
1. Docker Engine(Moby)
Windows Server 2022 不内置 Docker,需手动安装:
✅ 推荐方式:使用官方 Docker-Moby 包(Microsoft 维护)
# 1. 安装最新稳定版 Docker Engine(由 Microsoft 提供)
Invoke-WebRequest -Uri https://github.com/moby/moby/releases/download/v24.0.7/docker-24.0.7.zip -OutFile docker.zip
Expand-Archive docker.zip -DestinationPath $env:ProgramFilesdocker
$env:Path += ";$env:ProgramFilesdocker"
[Environment]::SetEnvironmentVariable("Path", $env:Path, [EnvironmentVariableTarget]::Machine)
# 2. 注册 Docker 服务(使用 dockerd.exe)
dockerd --register-service --data-root C:ProgramDatadocker
# 3. 启动服务
Start-Service Docker
✅ 官方镜像源:https://github.com/moby/moby/releases
📌 注意:从 Docker v20.10+ 起,Windows 版本已统一为 Moby Engine(原 Docker Engine),完全兼容docker CLI。
2. containerd(已包含在 Moby 发行版中)
dockerd默认内嵌containerd(无需单独安装),但可独立配置(如/Program Files/docker/containerd/config.toml)。
✅ 四、关键配置项(启动前验证)
| 配置项 | 推荐值 | 验证命令 |
|---|---|---|
| 容器隔离模式 | hyperv(生产首选)或 process |
docker info | findstr "Isolation" |
| Docker 数据根目录 | C:ProgramDatadocker(默认,确保磁盘空间充足) |
docker info | findstr "Docker Root Dir" |
| Windows 版本兼容性 | 主机 OS 版本 ≥ 容器镜像 OS 版本(如 mcr.microsoft.com/windows/servercore:ltsc2022) |
winver / systeminfo |
| 防火墙规则 | 开放 Docker daemon 端口(默认 2375 TCP,若启用 TLS 则用 2376) |
Get-NetFirewallRule -DisplayName "*Docker*" |
✅ 五、验证步骤(全部成功即就绪)
# 1. 检查服务状态
Get-Service Docker, vmcompute, vmms | Select Name, Status, StartType
# 2. 检查 Docker 引擎
docker version
docker info
# 3. 运行 Hello World(Windows 容器)
docker run --rm mcr.microsoft.com/windows/nanoserver:ltsc2022 cmd /c "echo Hello from Windows Container!"
# 4. 查看隔离模式与内核版本
docker info | findstr "Isolation KernelVersion OSType"
# 应输出:Isolation: hyperv(或 process)、OSType: windows、KernelVersion: 10.0.xxxx
❌ 常见误区与避坑指南
| 误区 | 正确做法 |
|---|---|
| ❌ 在 Windows Server 2022 上安装 Docker Desktop | ✅ 不支持!Docker Desktop 仅限 Windows 10/11 Pro/Enterprise 桌面版 |
| ❌ 仅启用 Containers 功能而不启用 Hyper-V | ✅ Windows Server 2022 实际要求 vmcompute(依赖 Hyper-V),否则 dockerd 启动失败 |
❌ 使用过时的 docker-msft-provider(PowerShell Gallery) |
✅ 已弃用;改用直接下载 Moby 二进制(GitHub 官方发布) |
❌ 运行 linux 镜像(如 ubuntu:22.04)直接失败 |
✅ Windows 容器只能运行 Windows 镜像;Linux 容器需 WSL2 + 自建方案(非生产推荐) |
✅ 总结:Windows Server 2022 运行 Docker 容器的最小必需集
| 类别 | 组件 | 是否必需 |
|---|---|---|
| Windows 功能 | Containers |
✅ 绝对必需 |
Hyper-V |
✅ 强烈必需(官方隐式依赖) | |
| 系统服务 | vmcompute |
✅ 绝对必需(HCS 核心) |
Docker(Moby Engine 服务) |
✅ 必需(手动安装) | |
| 软件 | Docker Engine(Moby dockerd.exe) |
✅ 必需 |
| 配置 | hyperv 隔离模式、匹配的 Windows 镜像(LTSC2022) |
✅ 推荐/必需 |
如需进一步支持(如:配置私有 Registry、加入 Swarm、启用 TLS、集成 Kubernetes(AKS 或 MicroK8s)、或 WSL2 下 Linux 容器实验方案),欢迎继续提问!
云知道CLOUD