在 Windows Server 2022 上安装 Docker,通常有两种主要方式:使用官方 MSI 安装包(推荐,适合生产环境)和 使用 PowerShell 脚本自动安装。
Windows Server 2022 默认支持两种容器运行时:Moby (Hyper-V) 和 Docker Desktop (WSL2)。但在服务器场景下,我们通常直接使用 Docker Engine for Windows(即通过 MSI 安装的版本),它直接运行在 Hyper-V 或 Container 模式下,性能更好且无需 WSL2 依赖。
以下是详细的操作步骤:
前置条件检查
在安装之前,请确保您的服务器满足以下要求:
- 操作系统:必须是 Windows Server 2022(Standard 或 Datacenter 版)。
- 功能开启:必须启用“容器”功能。
- 内存:建议至少 4GB RAM(取决于运行容器的数量)。
- 网络:确保服务器能访问互联网以下载镜像。
方法一:使用官方 MSI 安装包(推荐)
这是最稳定、最适合生产环境的安装方式。
1. 开启必要的系统功能
打开 PowerShell(以管理员身份运行),执行以下命令来启用容器支持:
Enable-WindowsOptionalFeature -Online -FeatureName Containers-DisposableClientVM -All
注意:如果提示需要重启,请先不要重启,继续执行后续步骤,或者根据提示操作。
同时,建议确认是否启用了 Microsoft-Hyper-V(虽然 Docker 可以独立运行,但作为基础环境通常建议开启):
Install-WindowsFeature -Name Hyper-V -IncludeManagementTools -Restart
2. 下载 Docker Engine
前往 Docker 官方 GitHub 发布页下载适用于 Windows Server 2022 的 MSI 安装包。
- 下载地址:Docker Engine for Windows Releases
- 找到对应
docker-engine的最新版本(例如docker-<version>.msi)。- 注:微软维护的 Windows 容器版本通常在
microsoft/windows-containers仓库中,而通用 Docker 引擎在moby/moby或docker/docker-ce的 Windows 部分。对于 Server 2022,推荐使用微软官方构建的 Docker Engine for Windows (基于 Moby)。 - 更直接的链接通常是:Docker CE Stable Release for Windows (注意:这个通常指 Docker Desktop)。
- 重要区分:如果您需要的是无 GUI 的服务器版 Docker Engine,请访问 Microsoft Container Registry 或直接搜索 "Docker Engine for Windows Server"。
- 最通用的方案:目前微软推荐直接在服务器上安装 Docker Desktop(用于开发测试)或者使用 Docker EE (已整合进 Docker Hub)。
- 针对 Server 2022 的标准做法:下载并运行
Docker-For-Windows.msi(如果是 Docker Desktop) 或者使用 PowerShell 脚本安装 Docker Engine。
- 注:微软维护的 Windows 容器版本通常在
修正策略:为了最稳妥地获得轻量级 Docker Engine(非 Desktop),建议使用 Docker Compose 和 Docker CLI 配合 Containerd,或者直接安装 Docker Desktop for Windows(它在后台会自动配置好 Engine)。
最简单且通用的安装路径(Docker Desktop):
- 下载
Docker Desktop Installer.exe(从 docker.com)。 - 双击运行,选择 "Use the WSL 2 based engine" (如果需要 Linux 容器) 或 "Use Hyper-V containers" (如果需要 Windows 容器)。
- 安装完成后重启电脑。
如果您坚持要纯命令行版的 Docker Engine (Moby):
由于微软不再单独提供旧版 .msi 给普通用户下载,现在推荐使用 Chocolatey 包管理器或 PowerShell 脚本 来一键安装。
3. 使用 Chocolatey 安装 (最快方式)
如果您的服务器安装了 Chocolatey (choco),只需一行命令:
# 先确保 choco 已安装,如果没有则需先安装 choco
# 然后执行以下命令安装 Docker Engine
choco install docker-desktop --params '"/EnableWSL2"' -y
注意:docker-desktop 包实际上会安装 Docker Engine + CLI + Compose。
4. 验证安装
安装完成后,打开新的 PowerShell 窗口,输入:
docker --version
docker info
如果显示版本号且没有报错,说明安装成功。
方法二:使用 PowerShell 脚本自动安装 (官方推荐脚本)
微软提供了一个官方的 PowerShell 脚本,可以自动处理所有依赖项、下载二进制文件并配置服务。
- 以管理员身份打开 PowerShell。
- 复制以下脚本并粘贴执行:
# 获取安装脚本内容
$ProgressPreference = 'SilentlyContinue'
Invoke-WebRequest -Uri https://raw.githubusercontent.com/Microsoft/Windows-Containers/main/tools/install.ps1 -OutFile install.ps1
# 执行安装脚本 (参数解释:-Version 指定版本,-Edition 指定 Edition)
# 如果不指定 Version,将安装最新版
.install.ps1 -Version latest -Edition windows
# 等待安装完成
注意:上述脚本是示例逻辑,具体脚本地址可能随时间变化。最权威的脚本通常位于微软的 GitHub 仓库 microsoft/Windows-Containers 下的 tools 目录。
更推荐的官方脚本命令(针对 Windows Server):
# 1. 启用容器功能
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
Enable-WindowsOptionalFeature -Online -FeatureName Containers-DisposableClientVM -All
# 2. 重启服务器 (必须)
Restart-Computer -Force
(重启后重新登录,继续下一步)
# 3. 下载并运行 Docker 安装脚本 (从官方 GitHub)
$url = "https://raw.githubusercontent.com/microsoft/Windows-Containers/main/tools/install.ps1"
$i = Invoke-WebRequest -Uri $url -UseBasicParsing
Set-Content -Path "install.ps1" -Value $i.Content
# 4. 运行安装 (假设安装最新版的 Windows 容器引擎)
.install.ps1 -Version latest -Edition windows
常见问题与注意事项
-
Windows 容器 vs Linux 容器:
- Windows 容器:镜像名称类似
mcr.microsoft.com/dotnet/framework/aspnet:4.8。它们共享宿主机的内核,性能最好,但只能运行在 Windows 宿主机上。 - Linux 容器:镜像名称类似
nginx:latest。需要在 Docker 设置中切换到 Switch to Linux containers 模式(通常需要 WSL2 后端支持)。 - 切换方法:右键任务栏 Docker 图标 -> Settings -> General -> 勾选 "Use WSL 2 based engine"。
- Windows 容器:镜像名称类似
-
权限问题:
如果在运行docker run时遇到Access Denied错误,请确保当前用户属于docker-users组,或者以管理员身份运行 PowerShell。 -
防火墙:
如果无法拉取镜像,请检查 Windows 防火墙是否阻止了出站连接,或者配置了X_X服务器。可以在C:ProgramDatadockerconfigdaemon.json中添加X_X配置。
总结
对于 Windows Server 2022:
- 如果是开发/测试环境:直接下载安装 Docker Desktop for Windows,体验最好,支持 Linux 和 Windows 容器切换。
- 如果是生产/精简环境:建议使用 Chocolatey 安装
docker-desktop或手动部署 Docker Engine (Moby),并确保开启了Containers功能特性。
安装完成后,请务必运行 docker run hello-world 进行最终验证。
云服务器