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

在 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


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

启用 ContainersHyper-V 后,以下关键服务将被安装并设为自动启动:

服务名 描述 启动类型 是否必需
vmms (Virtual Machine Management Service) Hyper-V 核心管理服务 Automatic ✅(若启用 Hyper-V)
vmcompute Windows 容器运行时后端(containerdhcs 交互的桥梁) 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 » 在Windows Server 2022上运行Docker容器需要启用哪些核心组件和服务?