走啊走
加油

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

服务器价格表

在 Windows Server 2022 上运行 Docker 容器(特别是原生 Windows 容器),需启用以下核心组件、服务和配置。注意:Windows Server 2022 原生支持 Windows 容器(基于 processhyperv 隔离),但不原生支持 Linux 容器(LCOW);若需运行 Linux 容器,必须借助 WSL2(仅限桌面版 Windows 10/11)或使用虚拟机方案(如 Hyper-V 虚拟机中部署 Linux + Docker),而Windows Server 2022 不推荐也不官方支持 WSL2(WSL2 在 Server SKU 中未启用且不受支持)。

✅ 正确路径:在 Windows Server 2022 上运行 Windows 容器(Windows-based containers),需如下配置:


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

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

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

# 2. 启用 Hyper-V(强烈推荐,尤其用于 hyperv 隔离模式、多租户安全场景,且是 Docker Desktop 的依赖)
# 注意:Hyper-V 是可选但高度推荐——它提供更强隔离性(即使对 Windows 容器),并支持 LCOW(已弃用)及未来兼容性
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All -NoRestart

# 3. (可选但推荐)启用“虚拟机平台”(为某些现代容器运行时/兼容性提供支持,如 containerd 1.7+ 的 WCL)
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform -All -NoRestart

# ⚠️ 注意:启用 Hyper-V 和 VirtualMachinePlatform 均需重启系统
Restart-Computer -Force

关键说明

  • Containers 功能是绝对必需的(提供 containerdhcs 等底层容器运行时支持)。
  • Microsoft-Hyper-V 并非 Windows 容器的严格必需项(process 隔离可在无 Hyper-V 下运行),但:
    • hyperv 隔离模式必须启用 Hyper-V;
    • Docker Engine 默认推荐 hyperv 隔离(更安全、稳定、与镜像兼容性更好);
    • 多数生产环境(尤其涉及不同 Windows 版本镜像、或需要内核版本隔离)要求 hyperv 隔离
    • Docker Desktop for Windows(非 Server 场景)也依赖 Hyper-V。

🐳 二、安装并配置 Docker 引擎(Docker Engine — not Docker Desktop)

⚠️ 重要区别

  • Docker Desktop for Windows 是为 Windows 10/11 桌面设计,不支持 Windows Server 2022(安装会失败或无法启动)。
  • 必须使用 Docker Engine for Windows Server(即 dockerd 作为 Windows 服务运行)。

步骤:

  1. 下载 Docker Engine(Windows Server 版)
    从 Docker Engine for Windows Server 获取 .zip 包(如 docker-24.0.7.zip)。

  2. 解压并安装为 Windows 服务(管理员 PowerShell):

    # 解压到 C:Program FilesDocker
    Expand-Archive .docker-24.0.7.zip -DestinationPath "$env:ProgramFilesDocker"
    
    # 注册为服务(使用 hyperv 隔离,推荐)
    & "$env:ProgramFilesDockerdockerd.exe" --register-service --experimental --data-root "C:ProgramDataDocker" --exec-opt isolation=hyperv
    
    # 启动服务
    Start-Service docker
  3. 验证安装

    docker version
    docker info | findstr "Isolation OSVersion"
    # 应显示 Isolation: hyperv 或 process,OSVersion: 10.0.xxxx(对应 Windows Server 2022 内核)

⚙️ 三、关键服务状态(自动管理,但需确认运行)

服务名称 描述 启动类型 状态要求
Docker Docker Engine 主服务(dockerd.exe 自动(延迟启动) ✅ 运行中
vmms Hyper-V Virtual Machine Management(若启用 Hyper-V) 自动 ✅ 运行中
hns Host Network Service(容器网络必需) 自动 ✅ 运行中(由 Containers 功能自动注册)
vmcompute Hyper-V Compute Service(若启用 Hyper-V) 自动 ✅ 运行中

✅ 可用命令检查:
Get-Service docker, vmms, hns, vmcompute | Select Name, Status, StartType


🌐 四、网络与存储准备(生产建议)

  • 网络:默认使用 nat 网络(由 HNS 自动创建)。如需高级网络(如 transparentl2bridge),需手动配置并确保物理网卡/交换机支持。
  • 存储驱动:Windows Server 2022 推荐使用 windowsfilter(默认),避免使用已弃用的 aufsbtrfs
  • 磁盘空间:确保 C:ProgramDataDocker(或自定义 --data-root)有充足空间(镜像/层/卷占用大)。

🚫 五、明确不支持或不推荐项

项目 说明
Docker Desktop ❌ 不支持 Windows Server 2022(仅限 Windows 10/11 Pro/Enterprise)
Linux 容器(LCOW) ⚠️ 已于 Docker 20.10+ 正式弃用;Windows Server 2022 无官方支持。替代方案:在 Hyper-V 虚拟机中部署 Linux + Docker。
WSL2 backend ❌ Windows Server 2022 未包含/不支持 WSL2(无 wsl.exe,无法启用 wsl --install
Docker Swarm 本地集群(跨主机) ✅ 支持,但需额外配置 TLS、网络(Overlay 网络需 VXLAN/Windows SDN)和防火墙端口(2377, 7946, 4789)

✅ 快速验证清单(管理员 PowerShell)

# 1. 检查必需功能
Get-WindowsOptionalFeature -Online -FeatureName Containers, Microsoft-Hyper-V | Where State -eq 'Enabled'

# 2. 检查服务
Get-Service docker, hns, vmms | Select Name, Status

# 3. 运行测试容器(Windows Nano Server 镜像)
docker run --rm mcr.microsoft.com/windows/nanoserver:ltsc2022 cmd /c "echo Hello from Windows Server 2022!"

# 4. 查看隔离模式
docker info | sls "Isolation|Kernel"

总结:最小可行配置 组件 是否必需 说明
Containers Windows 功能 ✅ 是 核心容器运行时(HCS、containerd)
Microsoft-Hyper-V ✅ 强烈推荐(生产必备) 支持 hyperv 隔离、安全增强、镜像兼容性
Docker Engine(dockerd 服务) ✅ 是 替代 Docker Desktop 的唯一官方方式
hns / vmcompute 服务 ✅ 自动启用 无需手动操作,但需确保运行

如需进一步协助(如配置私有 Registry、Kubernetes(AKS-HCI / MicroK8s on Windows)、或 Windows 容器 CI/CD 最佳实践),欢迎继续提问! 🐋