在 Windows Server 2022 上安装 Docker,最推荐的方式是使用 Docker Desktop for Windows(包含 WSL 2 后端)或者直接使用 Docker Engine for Windows。
考虑到云服务器通常对资源占用和稳定性有较高要求,且 Windows Server 2022 默认支持 WSL 2,以下是两种主流方案的详细步骤。
方案一:使用 Docker Desktop (推荐用于开发/测试)
这是最简单的安装方式,它集成了图形化管理界面、WSL 2 引擎和所有工具。适合大多数场景,但需要一定的内存和 CPU 资源。
1. 前置条件检查
确保你的云服务器满足以下要求:
- 虚拟化开启:必须在云服务商控制台(如阿里云、腾讯云、AWS 等)的实例设置中开启“嵌套虚拟化”或"Intel VT-x/AMD-V"功能。
- 操作系统版本:必须是 Windows Server 2022 标准版或数据中心版。
- 更新系统:运行
Update-Module -Name Microsoft.WindowsSubsystemForLinux或直接通过 Windows Update 将系统更新到最新版本。
2. 安装步骤
-
下载安装包:
访问 Docker 官网 下载适用于 Windows 的安装包(通常是.exe文件)。注意:如果服务器没有图形界面(Server Core),此方案不适用,请直接看方案二。
-
运行安装程序:
双击运行下载的Docker Desktop Installer.exe。 -
配置选项:
在安装向导中,务必勾选 "Use the WSL 2 based engine"(使用基于 WSL 2 的引擎)。这是性能最好且兼容性最强的模式。 -
完成安装并重启:
点击 Install,等待完成后重启服务器。 -
启动验证:
重启后,打开 PowerShell(以管理员身份),输入:docker --version docker run hello-world如果看到 "Hello from Docker!" 字样,说明安装成功。
方案二:使用 Docker Engine for Windows (推荐用于生产环境/无 GUI)
如果你使用的是 Windows Server Core(无图形界面)或者希望更轻量级的部署,可以直接安装 Docker Engine。这种方式不需要 Docker Desktop 的图形界面,资源占用更低。
1. 启用 WSL 2 子系统
即使不装 Docker Desktop,Docker Engine 也需要 WSL 2 作为底层容器运行时。
# 启用 WSL 功能
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
# 启用虚拟机平台功能
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
# 重启服务器
Restart-Computer
2. 安装 Docker Engine
由于没有图形界面,我们需要通过脚本自动安装。
-
下载安装脚本:
在 PowerShell 中运行以下命令下载官方安装脚本:Invoke-WebRequest -Uri https://raw.githubusercontent.com/microsoft/Windows-Containers/main/tools/install-docker.ps1 -OutFile install-docker.ps1(注:如果上述链接失效,请手动从 GitHub 仓库获取最新脚本,或参考微软官方文档使用
Install-DockerEngine模块) -
执行安装:
运行脚本进行安装(该脚本会自动处理依赖和配置):.install-docker.ps1 -AcceptLicense如果提示缺少依赖项,可能需要先安装最新的 .NET Runtime 或 Visual C++ Redistributable。
-
替代方案(手动 MSI 安装):
如果脚本无法运行,也可以直接下载 Docker Engine 的 MSI 安装包:- 访问 Docker Hub 的 releases 页面,下载
docker-ce_*.msi或docker-engine-*.msi。 - 使用命令行静默安装:
msiexec /i docker-engine-24.0.x.msi /quiet /qn /norestart
- 访问 Docker Hub 的 releases 页面,下载
3. 验证安装
docker --version
docker run hello-world
⚠️ 云服务器特别注意事项
-
网络与安全组:
安装 Docker 后,如果你需要在外部访问容器内的服务(例如端口 80, 443, 8080),请务必去云服务商的控制台配置 安全组规则,放行相应端口。- 在 Windows 内部防火墙中,Docker 通常会自动创建规则,但云厂商的安全组是必须手动配置的。
-
资源限制:
Windows Server 本身比 Linux 占用更多内存。在云服务器上运行 Docker 时,建议为容器分配合理的资源限制(通过--memory参数),防止宿主机内存耗尽导致宕机。 -
持久化存储:
云服务器的磁盘通常挂载了数据盘。建议将 Docker 的数据目录(默认在C:ProgramDataDocker)迁移到数据盘,或者在启动容器时使用-v参数将数据映射到非系统盘,以防系统重装导致数据丢失。# 示例:将数据卷映射到 D 盘 docker run -d -v D:mydata:/data nginx -
关于 Linux 容器的选择:
Windows Server 上的 Docker 可以运行 Windows 容器,也可以运行 Linux 容器(通过 WSL 2)。- 如果你的应用是跨平台的(如 Nginx, Redis, MySQL),强烈建议使用 Linux 容器镜像,因为它们在 WSL 2 上运行效率更高,且社区支持更好。
- 只有当应用强依赖 Windows 特有组件(如 .NET Framework 旧版本、IIS 特定模块)时,才使用 Windows 容器。
总结
- 有图形界面 + 追求易用性:选择 Docker Desktop。
- 无图形界面 (Core) + 追求轻量/稳定:选择 Docker Engine + WSL 2。
安装完成后,记得立即配置好云服务器的安全组策略,即可开始部署应用。
云计算