关键不是装 Docker Desktop,而是启用 Windows 内置容器子系统(Windows Container Runtime),配合 Docker Engine for Windows Server 或 containerd 运行原生 Windows 容器;需使用 Server 2016+ LTSC 版本,启用 containers 与 Hyper-V 功能,安装匹配内核版本的 servercore/nanoserver 镜像,并按进程或 Hyper-V 隔离模式部署微服务。
在 windows server 系统中启用 windows 容器功能以支持微服务,关键不是“装 docker desktop”,而是开启原生容器运行时并配置好隔离模式。docker desktop 不被支持,也不适用于生产环境;真正可用的是 windows 内置的容器子系统(windows container runtime),配合 docker engine for windows server 或 containerd 即可承载基于 .net framework、.net core、powershell 等的 windows 微服务。
确认系统版本与硬件准备
必须使用 Windows Server 2016 或更高版本(推荐 2019/2022 LTSC),且宿主机需满足以下条件:
- CPU 支持并已启用硬件虚拟化(Intel VT-x / AMD-V)——可在 BIOS/UEFI 中确认
- Hyper-V 角色或 Windows 容器功能已安装(二者可共存,但 Hyper-V 启用后会影响部分物理设备驱动)
- 系统为 Standard 或 Datacenter 版本;Windows Server Essentials 或 Core 不支持容器功能
- 确保已安装最新累积更新(如 KB5037771 等),避免因内核兼容性导致 hcsshim 启动失败
启用 Windows 容器功能
以管理员身份运行 PowerShell,依次执行:
Enable-WindowsOptionalFeature -Online -FeatureName containers -All -NoRestart Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All -NoRestart Restart-Computer -Force
重启后验证:
- Get-Command docker 应返回 docker.exe 路径(若未安装 Docker Engine,需后续手动部署)
- Get-Service vmcompute 状态应为 Running(这是 Windows 容器后台服务)
- docker version --format '{{.Server.Os}}' 应输出 windows
安装 Docker Engine(非 Desktop)
Windows Server 不适用 Docker Desktop。应使用官方 Docker CE for Windows Server:
- 从 mcr.microsoft.com/windows/servercore:ltsc2022 等镜像拉取基础环境(注意:镜像版本需与宿主 OS 内核匹配,例如 Server 2022 宿主只能运行 ltsc2022 镜像)
- 下载 docker-24.0.0.zip(适配 Windows Server 的原生二进制包),解压至
C:\Program Files\Docker - 运行
.\Install-Docker.ps1(脚本会注册 dockerd.exe 为 Windows 服务,并配置默认使用--windowscontainer模式) - 启动服务:Start-Service docker
配置微服务就绪环境
Windows 容器默认不包含 GUI、IIS 管理器或完整 .NET 桌面运行时,微服务需按容器化原则设计:
- 选择合适的基础镜像:servercore(含完整 Win32 API 和 .NET Framework)、nanoserver(极简、仅支持 .NET Core/.NET 5+,启动更快)
- Dockerfile 中显式指定隔离模式:
RUN docker run --isolation=process(进程隔离,轻量)或--isolation=hyperv(更强隔离,适合多租户或混合工作负载) - 微服务应用建议打包为自包含部署(SCD),避免依赖宿主机全局注册表或 GAC
- 若需集群编排,优先选用 Azure Kubernetes Service(AKS)上的 Windows 节点池,或使用 containerd + KubeEdge(已验证支持 Windows Server 进程隔离模式)


















