在 Windows Server 2022 上安装 Docker,通常有两种主要方式:使用 Docker Desktop(适合开发测试环境)或安装 Docker Engine for Windows(适合生产环境)。
由于 Windows Server 2022 默认支持两种容器模式(Windows 容器和 Linux 容器),但两者的配置步骤略有不同。以下是针对这两种场景的详细安装指南。
⚠️ 前置条件检查
在安装之前,请确保您的服务器满足以下要求:
- 操作系统版本:必须是 Windows Server 2022 Standard 或 Datacenter 版。
- 虚拟化支持:BIOS/UEFI 中必须开启虚拟化技术(Intel VT-x / AMD-V)。
- Hyper-V:Windows Server 2022 已内置 Hyper-V 功能,但建议先确认是否启用。
- 网络连接:需要能够访问 Microsoft 仓库或 Docker Hub。
方法一:安装 Docker Desktop (推荐用于开发/测试)
这是最简单的安装方式,适用于大多数非核心生产场景。它会自动处理 WSL2 后端或 Hyper-V 后端的配置。
1. 下载安装包
访问 Docker 官网下载页面,选择 Windows Server 2022 对应的版本:
- 前往 Docker Hub 搜索
docker-desktop并找到 "Stable" 标签下的amd64架构安装包(.msi文件)。 - 注意:Docker Desktop 对服务器版的授权策略较严格,主要用于开发和测试。
2. 运行安装向导
- 双击下载的
.msi文件。 - 按照向导提示点击 "Next"。
- 在组件选择界面,确保勾选 WSL 2 Backend(如果系统支持)或 Hyper-V Backend。
- 对于 Windows Server 2022,推荐使用 Hyper-V 模式以获得更好的兼容性,或者在已安装 WSL2 的环境中使用 WSL2 后端。
- 完成安装并重启服务器(根据提示)。
3. 验证安装
打开 PowerShell(管理员模式),输入:
docker --version
docker run hello-world
如果看到 "Hello from Docker!" 消息,则安装成功。
方法二:安装 Docker Engine (推荐用于生产环境)
如果您需要在生产环境中部署且不想使用 Docker Desktop 的额外开销,可以直接安装 Docker Engine。这需要手动配置 Hyper-V 或 WSL2。
步骤 1:启用 Hyper-V 功能
Docker Engine on Windows 依赖 Hyper-V。请在 PowerShell (管理员) 中运行:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
安装完成后,根据提示重启服务器。
步骤 2:下载 Docker MSI 安装包
由于 Docker 不再直接提供旧版的 standalone MSI 下载链接,我们需要通过 PowerShell 脚本自动下载并安装。
在 PowerShell (管理员) 中执行以下命令(这将自动下载最新版本的 Docker Engine):
# 设置变量以获取最新版本
$dockerVersion = (Invoke-WebRequest -Uri "https://api.github.com/repos/microsoft/Windows-Containers/releases/latest" | ConvertFrom-Json).tag_name
$downloadUrl = "https://download.docker.com/win/static/stable/x86_64/docker-$($dockerVersion)-amd64.zip"
# 更推荐的方式:使用官方提供的安装脚本
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/microsoft/Windows-Containers/main/scripts/install-docker.ps1" -OutFile "install-docker.ps1"
.install-docker.ps1
如果上述脚本不可用,也可以手动下载 docker-engine 的 MSI 包(通常在 Docker 官方 GitHub Releases 页面的 "Assets" 中寻找 docker-<version>-windows-amd64.msi)。
步骤 3:配置 Docker 守护进程 (可选)
如果是生产环境,您可能需要修改配置文件以指定镜像源(如阿里云、腾讯云等国内镜像提速)或调整资源限制。
配置文件路径通常为:C:ProgramDataDockerconfigdaemon.json。
例如,添加国内镜像提速器:
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://huecker.io"
]
}
修改后重启服务:
Restart-Service docker
关键区别:Windows 容器 vs Linux 容器
在 Windows Server 2022 上运行时,您需要决定运行哪种类型的容器:
| 特性 | Windows 容器 | Linux 容器 (WLC) |
|---|---|---|
| 基础镜像 | 基于 Windows Server Core | 基于 Alpine, Ubuntu, Debian 等 |
| 适用场景 | .NET Framework, IIS, 传统 Windows 应用 | Node.js, Python, Go, Java, Nginx 等主流开源栈 |
| 内核依赖 | 共享宿主机的 Windows 内核 | 需要 WSL2 或 Hyper-V 隔离的 Linux 内核 |
| 启动速度 | 较快 | 稍慢 (需启动轻量级 VM) |
| Dockerfile 指令 | FROM mcr.microsoft.com/windows/servercore:ltsc2022 |
FROM node:alpine, FROM python:3.9 |
如何切换?
- Windows 容器:默认模式。
- Linux 容器:在 Docker Desktop 右下角图标菜单中选择 "Switch to Linux containers";或在命令行中设置环境变量
set DOCKER_DEFAULT_PLATFORM=linux。
常见问题排查
-
错误:The container operating system does not match the host operating system.
- 原因:您试图在 Windows 宿主机上运行 Linux 镜像,但未切换到 Linux 容器模式。
- 解决:在 Docker Desktop 菜单中切换模式,或在 PowerShell 中设置
DOCKER_DEFAULT_PLATFORM=linux。
-
错误:No such image or container.
- 原因:网络问题导致无法拉取镜像。
- 解决:配置
daemon.json中的镜像提速器地址。
-
权限不足。
- 解决:确保以 Administrator 身份运行 PowerShell 或 CMD。
总结
- 如果是开发或临时测试,直接使用 Docker Desktop 是最快路径。
- 如果是生产环境,建议使用 Docker Engine + Hyper-V 方案,并根据业务需求选择 Windows 或 Linux 容器模式。
- 无论哪种方式,请务必记得配置国内镜像提速,否则拉取镜像会非常缓慢。
云知识CLOUD