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

在 Windows Server 2022 上运行 Docker 容器(尤其是原生 Windows 容器),需启用以下核心组件、服务和配置。注意:Windows Server 2022 原生支持 Windows 容器(基于 Hyper-V 或 Process 隔离),但不直接支持原生 Linux 容器(LCOW);若需运行 Linux 容器,必须通过 WSL2 + Docker Desktop(仅限桌面版)或 Docker Engine on WSL2(Server 场景受限) —— 但 Docker Desktop 不支持 Windows Server,因此生产环境推荐方案是:

首选方案:使用 Windows 容器(Windows Server Containers 或 Hyper-V Containers)
❌ 不推荐/不支持:在 Windows Server 2022 上直接安装 Docker Desktop(官方不支持)或原生 Linux 容器引擎。


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

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

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

# 2. 启用 Hyper-V(仅当需 Hyper-V 隔离容器或嵌套虚拟化时必需;Process 隔离可选)
# 注意:Hyper-V 是 Windows Server 容器的隔离增强选项,且是运行 Linux 容器(通过 WSL2)的前提,
# 但 WSL2 在 Windows Server 2022 上需手动启用(见下文),且非生产推荐。
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All -NoRestart

# 3. (可选但强烈推荐)启用 Windows Subsystem for Linux(WSL2 前提,仅当你计划通过 WSL2 运行 Linux 容器时需要)
# ⚠️ 注意:WSL2 在 Windows Server 2022 上受支持(自 2022 年 9 月更新起),但属于“实验性支持”,不适用于生产 Linux 容器负载。
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux -NoRestart

# 4. (如启用 WSL2)还需启用虚拟机平台(VM Platform)
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform -NoRestart

🔁 执行后需重启服务器(Restart-Computer)。


✅ 二、必需的服务与守护进程

服务 状态要求 说明
Docker Engine(dockerd.exe) ✅ 运行中(作为 Windows 服务) 官方 Docker Engine for Windows(docker.io)或通过 Install-Module DockerMsftProvider 安装(已弃用)→ 推荐使用官方二进制或 Chocolatey
vmms (Virtual Machine Management Service) ✅ 运行中(若启用 Hyper-V) 支持 Hyper-V 隔离容器及 WSL2。
LxssManager(Linux Subsystem Service) ✅ 运行中(仅启用 WSL2 时) WSL2 必需,但非 Windows 容器必需。

💡 提示:Windows 容器无需 WSL2 或 LxssManager;它们仅用于 Linux 容器场景(非标准 Server 生产路径)。


✅ 三、关键配置步骤

  1. 安装 Docker Engine(Windows 版)

    # 方式1:使用官方二进制(推荐,稳定可控)
    # 下载最新 docker-24.x.x.zip(如 https://desktop.docker.com/win/stable/amd64/)
    # 解压到 C:Program FilesDocker,添加到 PATH,并注册为服务:
    .dockerd --register-service --data-root "C:ProgramDataDocker"
    Start-Service docker
    
    # 方式2:使用 Chocolatey(需先安装 choco)
    choco install docker-engine
  2. 配置 Docker Daemon(daemon.json
    路径:C:ProgramDataDockerconfigdaemon.json
    示例(启用 Windows 容器 + 默认隔离模式):

    {
     "exec-opts": ["native.cgroupdriver=systemd"],
     "hosts": ["tcp://0.0.0.0:2375", "npipe://"],
     "insecure-registries": [],
     "registry-mirrors": [],
     "experimental": false,
     "default-isolation": "process",  // 或 "hyperv"(需 Hyper-V)
     "lcow": { "enabled": false }       // 显式禁用 LCOW(Linux Containers on Windows),已废弃
    }

    ⚠️ lcow 已被弃用(Docker 20.10+ 移除),不要启用

  3. 验证 Windows 容器运行时

    # 切换到 Windows 容器模式(必须!)
    & 'C:Program FilesDockerdockerd.exe' --unregister-service
    & 'C:Program FilesDockerdockerd.exe' --register-service --containerd='C:Program FilesDockercontainerdcontainerd.exe'
    Restart-Service docker
    
    # 拉取并运行 Windows 容器测试镜像
    docker pull mcr.microsoft.com/windows/servercore:ltsc2022
    docker run --rm -it mcr.microsoft.com/windows/servercore:ltsc2022 cmd /c "echo Hello from Windows Container!"

✅ 四、网络与存储(生产必备)

组件 要求 说明
HNS(Host Network Service) ✅ 自动启用(容器功能启用后即就绪) Windows 容器网络基础(docker network ls 依赖)。
Containerd(推荐) ✅ Docker Engine v20.10+ 默认集成 containerd 更稳定,替代旧版 dockerd 内置的 containerd-shim。
存储驱动 推荐 windowsfilter(默认)或 wsl(仅 WSL2 场景) windowsfilter 是 Windows 容器标准驱动;wsl 仅用于 WSL2 后端(不适用于 Server)。

❌ 不支持/不推荐的操作

项目 原因
Docker Desktop for Windows Server ❌ 官方明确不支持(仅限 Windows 10/11 Pro/Enterprise)。
原生 Linux 容器(无 WSL2/Hyper-V) ❌ Windows Server 容器运行时无法运行 Linux 内核镜像。
LCOW(Linux Containers on Windows) ❌ 自 Docker Engine 20.10 起彻底移除,不再维护。
Docker Toolbox ❌ 已废弃,不兼容 Windows Server 2022。

✅ 最佳实践总结(生产环境)

项目 推荐配置
容器类型 Windows Server Containers(--isolation=process)或 Hyper-V Containers(--isolation=hyperv
基础镜像 mcr.microsoft.com/windows/servercore:ltsc2022nanoserver:ltsc2022
管理工具 Docker CLI + PowerShell + Windows Admin Center(含容器扩展)
安全加固 启用 gMSA(组托管服务帐户)、限制容器特权、使用 --read-only、禁用 --privileged
日志与监控 配置 json-file 日志驱动 + Windows Event Log / Azure Monitor / Grafana+Prometheus(通过 cAdvisor for Windows)

如需运行 Linux 容器,生产级建议方案是:
➡️ 在独立 Linux VM 或 Kubernetes 集群(如 AKS、Rancher、OpenShift)中运行,而非在 Windows Server 上模拟。

需要我为你提供:

  • ✅ 完整的 PowerShell 自动化部署脚本?
  • daemon.json 高可用/安全加固模板?
  • ✅ Windows 容器 CI/CD(GitHub Actions / Azure Pipelines)示例?
  • ✅ gMSA 配置详细步骤?

欢迎随时提出 👍

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