在 Windows Server 2022 Datacenter 上安装 Docker 是完全支持的,但需要注意的是:Docker 在 Windows 上的实现方式与 Linux 不同。Windows 使用的是基于容器技术的 Docker Desktop for Windows 或直接通过 Microsoft 的容器运行时(如 containerd + Docker CLI) 来管理容器。
不过,从 2023 年起,Docker 官方不再推荐在服务器环境中使用 Docker Desktop,而是建议使用 Mirantis 提供的 Moby + Docker CLI 解决方案 或直接使用 containerd 配合 Kubernetes(如 AKS-Engine、K3s 等)。
✅ 推荐方式:在 Windows Server 2022 上安装 Docker Engine(Moby)
这是目前最稳定和官方推荐的方式,适用于生产环境。
步骤 1:启用容器功能
以管理员身份打开 PowerShell:
# 启用容器功能
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V, Microsoft-Container-Features -All
⚠️ 注意:需要重启服务器。
重启后继续下一步。
步骤 2:安装 PowerShell 模块 DockerMsftProvider
# 安装 NuGet 包提供程序
Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force
# 安装 Docker 的 PowerShell 提供程序
Install-Module -Name DockerMsftProvider -Repository PSGallery -Force
# 从 Microsoft 更新源安装 Docker
Install-Package -Name docker -ProviderName DockerMsftProvider -Force
步骤 3:重启系统
Restart-Computer -Force
步骤 4:验证安装
重启后,运行:
# 查看 Docker 版本
docker --version
# 查看服务状态
Get-Service docker
# 如果未启动,手动启动
Start-Service docker
步骤 5:测试运行一个 Windows 容器
docker run --rm mcr.microsoft.com/windows/servercore:ltsc2022 echo "Hello from Windows Container!"
⚠️ 注意:你必须拉取与主机 OS 兼容的镜像版本(如 LTSC2022)。不兼容的版本会导致错误。
🔁 可选:升级或更新 Docker
Update-Package -Name docker -ProviderName DockerMsftProvider
然后重启 docker 服务或整个系统。
🐳 如何使用 Linux 容器?
Windows Server 原生只支持 Windows 容器。
如果想运行 Linux 容器,有以下几种方式:
-
使用 WSL2 + Docker Desktop(仅限 Windows Server 支持 WSL 的版本)
- Windows Server 2022 支持 WSL2,但需手动启用。
- 下载并安装 WSL2 内核
- 安装 Docker Desktop for Windows Server
-
使用 Hyper-V 隔离运行 Linux VM 并在其上运行 Docker
-
使用 Kubernetes(如 AKS on Windows or K3s)混合编排 Windows/Linux 容器
❌ 不推荐:直接安装 Docker Desktop(除非开发/测试)
虽然可以在 Windows Server 上安装 Docker Desktop,但它主要用于开发环境,并且需要 GUI 支持,在无界面的 Server Core 中不可用。
如果你确实需要:
- 下载 Docker Desktop Installer
- 启用 “Windows Subsystem for Linux” 和 “Hyper-V”
- 安装并配置 WSL2 backend
✅ 最佳实践建议
| 目标 | 推荐方案 |
|---|---|
| 生产部署 Windows 容器 | 使用 DockerMsftProvider 安装 Docker Engine |
| 运行 Linux 容器 | 使用 WSL2 + Docker Desktop 或虚拟机 |
| 编排多容器应用 | 使用 Kubernetes(如 Rancher、AKS Hybrid、OpenShift) |
| 轻量级运行时 | 使用 containerd + nerdctl 替代 Docker |
📚 参考文档
- https://learn.microsoft.com/en-us/virtualization/windowscontainers/quick-start/set-up-environment?tabs=windows-server
- https://docs.docker.com/engine/install/windows/
- https://github.com/moby/moby/issues/39730 (关于 Windows 上 Docker 的长期讨论)
如有具体用途(例如部署 ASP.NET 应用、CI/CD 等),欢迎补充,我可以给出更详细的配置建议。
云计算