在 Windows Server 2022 Datacenter 上安装 Docker,需要使用 Docker Desktop for Windows 或更推荐的方式是使用 Microsoft 的容器功能(如 Moby + containerd),因为传统的 Linux 版本 Docker 不适用于 Windows。
但请注意:Docker Desktop 不支持 Windows Server 操作系统。它仅支持 Windows 10/11 Pro 或 Enterprise。
因此,在 Windows Server 2022 Datacenter 上运行容器的正确方式是:
✅ 推荐方案:使用 Microsoft 官方支持的容器运行时(Moby + containerd)
这是官方推荐用于 Windows Server 的方式。
步骤 1:启用容器功能
以管理员身份打开 PowerShell 并运行:
# 启用容器功能
Enable-WindowsOptionalFeature -Online -FeatureName containers -All
# 重启服务器
Restart-Computer -Force
步骤 2:安装容器运行时(Moby)
微软提供了一个脚本来自助安装 Moby(一个开源容器引擎,基于 Docker 项目)。
# 下载并运行容器安装脚本
Invoke-WebRequest "https://github.com/microsoft/hcsshim/releases/latest/download/install.msi" -OutFile "install-containerd.msi"
Start-Process msiexec.exe -Wait -ArgumentList "/i install-containerd.msi /quiet"
# 或者使用旧版 Moby 引擎(已逐步淘汰)
# 使用以下命令安装 Moby:
# Install-Module -Name DockerMsftProvider -Repository PSGallery -Force
# Install-Package -Name docker -ProviderName DockerMsftProvider -Force
# Start-Service Docker
⚠️ 注意:
DockerMsftProvider
已被弃用(自 2023 年起),建议使用containerd
和hcsshim
。
步骤 3:验证安装
# 查看服务状态
Get-Service containerd
# 测试运行一个 Windows 容器
docker run --rm mcr.microsoft.com/windows/nanoserver:ltsc2022 echo "Hello from Windows Container!"
如果提示
'docker' is not recognized
,请确认 PATH 包含C:Program FilesLinux Containersbin
或类似路径(取决于安装方式)。
步骤 4:配置镜像提速(可选,国内用户)
编辑 daemon.json
文件(通常位于 C:ProgramDatadockerconfigdaemon.json
):
{
"registry-mirrors": ["https://<your-mirror>.mirror.aliyuncs.com"]
}
然后重启服务:
Restart-Service containerd
🛑 不支持的情况说明
- ❌ Docker Desktop:不支持 Windows Server 系统。
- ❌ Linux 容器(WSL2 后端):Windows Server 不支持 WSL2,因此不能运行 Linux 容器(除非使用 Hyper-V 隔离 + LCOW,但实验性且性能差)。
✅ 支持的容器类型
类型 | 是否支持 | 说明 |
---|---|---|
Windows 容器 | ✅ 是 | 推荐,使用 Nano Server、Server Core 镜像 |
Linux 容器 (LCOW) | ⚠️ 实验性 | 需开启 LCOW,性能较差,不推荐生产 |
开启 LCOW(可选,测试用途):
# 创建或修改 daemon.json
Set-Content -Path "$env:ProgramDatadockerconfigdaemon.json" -Value '{ "features": { "lcow": true } }'
# 重启服务
Restart-Service docker
然后可以拉取 Linux 镜像:
docker run --rm alpine echo "Hello from Alpine Linux"
⚠️ LCOW 性能较差,仅适合测试。
🔧 常见问题排查
-
错误:no matching manifest for windows/amd64
- 解决方法:确保你使用的基础镜像与主机版本匹配(如
ltsc2022
对应 Win Server 2022)。 - 示例:
docker run mcr.microsoft.com/windows/nanoserver:ltsc2022
- 解决方法:确保你使用的基础镜像与主机版本匹配(如
-
Hyper-V 未启用
- 运行:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V, Containers -All
- 然后重启。
- 运行:
-
权限不足
- 确保当前用户属于
docker-users
组或使用管理员运行。
- 确保当前用户属于
✅ 总结
目标 | 方法 |
---|---|
在 Win Server 2022 跑容器 | ✅ 使用 containerd + Windows 容器 |
安装 Docker 命令行工具 | ✅ 使用 Microsoft 提供的 Moby/containerd 安装包 |
运行 Linux 容器 | ⚠️ 可通过 LCOW 实现,但不推荐生产环境 |
🔗 参考文档
- Microsoft 容器文档
- Install containerd on Windows
- Windows Server 容器镜像兼容性
如果你有具体的应用场景(比如想部署 ASP.NET 应用、CI/CD 等),我可以提供更具体的 Dockerfile 和部署示例。欢迎继续提问!