在 Windows Server 2022 Standard 上安装 Docker,必须使用 "Docker Desktop for Windows"(包含 WSL 2 后端)或者通过 Docker Engine for Windows (Server Core) 进行安装。
由于你使用的是 Windows Server 2022 Standard(通常用于生产环境),微软官方推荐且最稳定的方式是使用 Docker Engine(命令行工具 + 后台服务),而不是带有图形界面的 Docker Desktop。
以下是两种主流方案的详细步骤:
方案一:使用 Docker Engine(推荐用于生产环境/服务器)
这是最轻量、性能最好的方式,适合没有图形界面或需要长期运行的服务器场景。它基于 WSL 2 或 Hyper-V 容器化技术。
1. 前置检查与准备
确保你的系统满足以下条件:
- 操作系统版本:Windows Server 2022 Standard (Build 20348+)。
- 虚拟化支持:BIOS 中已开启 VT-x/AMD-V,且 Hyper-V 功能已启用。
- 更新系统:运行
Get-WindowsFeature确认功能状态。
2. 启用必要的 Windows 功能
以 管理员身份 打开 PowerShell,依次运行以下命令来启用容器和 Hyper-V 支持:
# 启用容器功能
Enable-WindowsOptionalFeature -Online -FeatureName Containers -All
# 启用 Hyper-V 功能(如果尚未启用)
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
# 重启系统以应用更改
Restart-Computer
3. 安装 Docker Engine
Docker 官方提供了自动化的安装脚本,这是最简便的方法。
-
下载并运行安装脚本(以管理员身份运行 PowerShell):
Invoke-WebRequest -UseBasicParsing -Uri https://raw.githubusercontent.com/microsoft/wsl-docker/main/scripts/docker-install.ps1 -OutFile docker-install.ps1 # 注意:上述链接可能随时间变化,建议直接访问 GitHub 获取最新脚本,或使用下方的手动安装包方式。更稳妥的手动安装步骤(推荐):
- 访问 Docker Hub 或 Microsoft Learn 文档。
- 下载最新的 Docker MSI 安装包 (例如
docker-24.0.x.msi)。 - 双击运行
.msi文件,按照向导安装。 - 关键选项:在安装过程中,选择 "Install the containerd runtime" 和 "Allow non-admin users to use Docker" (可选)。
4. 配置 WSL 2 后端(强烈建议)
为了获得更好的性能和兼容性,建议将 Docker 的默认运行时从 Hyper-V 切换到 WSL 2。
- 安装 WSL 2 内核更新(如果尚未安装):
wsl --install - 设置默认发行版为 WSL 2:
wsl --set-default-version 2 - 重启 Docker 服务后,Docker 会自动检测并使用 WSL 2。
5. 验证安装
安装完成后,重启电脑,然后运行:
docker version
docker run hello-world
如果看到 "Hello from Docker!" 字样,说明安装成功。
方案二:使用 Docker Desktop for Windows(适合开发/测试环境)
如果你需要在服务器上保留图形界面(GUI),并且像普通 Windows 桌面一样管理容器,可以使用 Docker Desktop。
注意:Docker Desktop 对资源消耗较大,且在某些严格的许可协议下,仅允许用于个人学习、开发或演示,不建议用于核心生产业务。
- 下载:前往 Docker 官网下载适用于 Windows 的 Docker Desktop 安装包。
- 安装:运行安装程序。
- 它会提示你启用 WSL 2 和 Hyper-V。
- 安装过程会自动配置这些组件。
- 启动:安装完成后,点击桌面上的 Docker 图标启动服务。
- 验证:打开 PowerShell 输入
docker version或docker run hello-world。
常见问题与注意事项
-
镜像选择:
- 在 Windows Server 上,默认拉取的是 Windows 容器镜像 (
mcr.microsoft.com/windows/...)。 - 如果你需要运行 Linux 容器(如 Nginx, MySQL, Node.js 等),你需要配置 Docker 使用 WSL 2 后端,或者在 PowerShell 中指定
--platform linux。 - 示例:
docker run --platform linux -d nginx
- 在 Windows Server 上,默认拉取的是 Windows 容器镜像 (
-
网络问题:
- Windows Server 的防火墙可能会阻止容器通信。如果无法联网,请检查防火墙规则,允许
docker-proxy和nat相关的端口。
- Windows Server 的防火墙可能会阻止容器通信。如果无法联网,请检查防火墙规则,允许
-
权限问题:
- 默认情况下,只有 Administrators 组可以运行 Docker 命令。如果需要非管理员用户运行,可以在安装时勾选相关选项,或在安装后运行:
New-ItemProperty -Path "HKLM:SOFTWAREMicrosoftWindows NTCurrentVersionDocker" -Name "EnableNonAdminAccess" -Value 1 -PropertyType DWORD -Force Restart-Service Docker
- 默认情况下,只有 Administrators 组可以运行 Docker 命令。如果需要非管理员用户运行,可以在安装时勾选相关选项,或在安装后运行:
-
Standard vs Datacenter:
- 对于大多数通用容器场景,Standard 版完全足够。只有在需要使用 Shielded VMs 或特定的 Host Guardian Service 功能时,才必须使用 Datacenter 版。
总结
- 生产环境/纯命令行服务器:请选择 方案一 (Docker Engine),配合 WSL 2 后端,稳定且资源占用低。
- 开发调试/带 GUI 环境:可以选择 方案二 (Docker Desktop),但需注意授权合规性。
云服务器