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

在 Windows Server 2022 上运行 Docker 容器(特别是原生 Windows 容器),需启用以下核心组件、服务和配置。注意:Windows Server 2022 原生支持 Windows 容器(基于 processhyperv 隔离),但不原生支持 Linux 容器(LCOW);如需运行 Linux 容器,必须通过 WSL2 + Docker Desktop(仅限桌面版,不适用于 Server)Docker Engine on WSL2(非官方/受限场景) —— 但Windows Server 2022 官方生产推荐方案是运行 Windows 容器

以下是为在 Windows Server 2022 上安全、稳定运行 Windows 容器(Docker Engine)所必需启用的核心项


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

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

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

# 2. 启用 Hyper-V(仅当使用 hyperv 隔离模式时必需;process 隔离可选,但强烈推荐启用以支持更安全的隔离)
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All -NoRestart

# 3. (可选但推荐)启用 Windows Subsystem for Linux(仅当后续需 WSL2 辅助调试或混合场景;非 Docker Engine 必需)
# Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux -All -NoRestart

⚠️ 注意:

  • containers 功能是绝对必需的,提供容器运行时基础(如 containerd 支持)。
  • Microsoft-Hyper-V 是启用 hyperv 隔离模式的前提(推荐用于生产环境,提供更强进程/网络隔离);若仅使用 process 隔离(轻量、性能略高),理论上可不启用 Hyper-V,但微软强烈建议启用(尤其在多租户/安全敏感场景),且某些镜像(如 Server Core 2022)默认要求 hyperv 隔离。
  • 重启服务器(Restart-Computer)在启用后是必需的。

✅ 二、安装并配置 Docker Engine(Moby)

Windows Server 2022 不内置 Docker,需手动安装 Docker Engine(由 Moby 项目提供):

方法(推荐):使用官方 Docker-Moby 安装脚本

# 以管理员身份运行
Invoke-WebRequest "https://raw.githubusercontent.com/moby/moby/master/contrib/install.ps1" -UseBasicParsing | Invoke-Expression

该脚本会:

  • 下载最新稳定版 dockerd.exedocker.exe(Moby 引擎)
  • 安装为 Windows 服务(Docker 服务)
  • 配置默认 daemon.json(位于 C:ProgramDatadockerconfigdaemon.json

✅ 安装后验证:

Get-Service docker  # 状态应为 Running
docker version      # 显示 client/server 版本(server 应为 windows)
docker info         # 查看 Isolation: "process" 或 "hyperv"

✅ 三、关键服务与依赖

服务名称 是否必需 说明
Docker (dockerd) ✅ 必需 Docker 引擎主服务(Windows 服务名:Docker
vmms (Virtual Machine Management Service) ✅(若启用 hyperv 隔离) Hyper-V 管理服务,dockerd 启动 hyperv 隔离容器时依赖
WinNAT ✅ 必需 Windows Network Address Translation 服务,为容器提供 NAT 网络(docker0 网桥依赖)
WdNisSvc(Windows Defender Antivirus Service) ⚠️ 推荐启用(非强制) 防病毒扫描可能影响镜像拉取/构建速度,但禁用会降低安全性;建议配置排除路径(如 C:ProgramDatadocker

🔍 检查服务状态:

Get-Service docker, vmms, WinNAT | Select-Object Name, Status, StartType

✅ 四、必要系统配置与权限

  1. 用户权限

    • 运行 docker CLI 的账户需属于 docker-users 本地组(安装脚本自动创建):
      Add-LocalGroupMember -Group "docker-users" -Member "DOMAINUsername"
    • 或直接以 Administrators 组成员身份运行(开发测试可接受,生产环境不推荐)。
  2. 防火墙配置

    • 默认无需开放额外端口(Docker 内部通信走命名管道 //./pipe/docker_engine);
    • 若启用 Docker Engine 的 TCP Socket(不推荐生产环境),需放行对应端口(如 2375/2376),并严格限制访问源。
  3. 存储驱动(Storage Driver)

    • Windows Server 2022 默认使用 windowsfilter(推荐,性能好、兼容性强);
    • 可在 daemon.json 中显式指定(非必需):
      { "storage-driver": "windowsfilter" }
  4. DNS 与网络

    • 确保服务器能解析公网域名(如 mcr.microsoft.com),用于拉取镜像;
    • 建议配置可靠 DNS(如 8.8.8.8 或企业 DNS),避免因 DNS 失败导致 docker pull 超时。

❌ 不推荐/不支持的配置(常见误区)

  • ❌ 在 Windows Server 上安装 Docker Desktop:Docker Desktop 仅支持 Windows 10/11 Pro/Enterprise不支持任何 Windows Server 版本(包括 2022)。
  • ❌ 尝试在 Server 2022 上原生运行 Linux 容器(LCOW):自 Docker Engine 20.10+ 已正式弃用 LCOW,且 Windows Server 2022 无 WSL2 内核集成(WSL2 仅限桌面版 Windows)。
  • ❌ 禁用 WinNATvmms:将导致容器网络失败或 hyperv 隔离不可用。

✅ 快速验证清单(部署后必做)

# 1. 重启后检查服务
Get-Service docker | Where-Object Status -eq 'Running'

# 2. 运行 Hello World(Windows 容器)
docker run --rm mcr.microsoft.com/windows/nanoserver:ltsc2022 cmd /c "echo Hello from Windows Container!"

# 3. 检查隔离模式(推荐使用 hyperv)
docker info | findstr "Isolation"
# 输出应为:Isolation: hyperv   (或 process)

# 4. 检查镜像拉取是否正常
docker pull mcr.microsoft.com/windows/servercore:ltsc2022

📌 总结:最小必需启用项

类别 项目 是否必需
Windows 功能 containers
Microsoft-Hyper-V ✅(生产推荐;hyperv 隔离必需)
Windows 服务 Docker(dockerd)
WinNAT
vmms(若用 hyperv)
用户组 docker-users 成员 ✅(或 Administrators)
网络 可达 mcr.microsoft.com + 可靠 DNS

✅ 完成以上配置后,即可在 Windows Server 2022 上安全、高效地运行 Windows 容器(支持 IIS、.NET Framework/.NET Core、SQL Server Express 等 Windows 工作负载)。

如需进一步优化(如镜像缓存、CI/CD 集成、Kubernetes(AKS-Engine 或 MicroK8s)或安全加固(gMSA、TPM 支持)),可继续深入配置。欢迎提出具体场景需求 👍

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