在 Windows Server 2022 上部署 Docker 是完全可行的,但需要注意其底层机制与 Linux 发行版不同。Windows Server 上的 Docker 默认运行在 Hyper-V 或 WSL 2(推荐)之上,而不是原生的 Linux 内核。
以下是两种主流部署方案的详细步骤,强烈建议优先选择 WSL 2 方案,因为它性能更好、资源占用更低且更贴近原生 Linux 体验。
方案一:使用 WSL 2 后端(推荐)
这是目前微软官方推荐的现代方式。它利用轻量级虚拟机技术,让 Docker 能够直接调用 Linux 内核功能,性能接近原生,且支持 Linux 容器。
1. 启用 WSL 和虚拟化功能
首先需要在服务器中开启必要的功能。请以管理员身份打开 PowerShell 并执行以下命令:
# 启用 WSL 功能
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
# 启用虚拟机平台功能 (用于 WSL 2)
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
# 重启服务器以生效
Restart-Computer
注意:如果提示需要重启,请确保保存好当前工作后重启。
2. 安装 Linux 发行版 (可选但推荐)
虽然 Docker Desktop for Windows 可以自动管理,但在纯服务器环境下,通常需要先安装一个 Linux 发行版作为 WSL 环境的基础。这里以 Ubuntu 为例:
# 从 Microsoft Store 获取 Ubuntu (如果无法访问商店,可下载 .appx 包手动安装)
wsl --install -d Ubuntu
或者手动安装:
# 设置默认版本为 WSL 2
wsl --set-default-version 2
3. 安装 Docker Desktop
在 Windows Server 2022 上,最方便的方式是安装 Docker Desktop。
- 前往 Docker 官网下载页面。
- 下载 Docker Desktop for Windows 安装包(注意选择包含 WSL 2 支持的版本)。
- 运行安装程序。在安装过程中,确保勾选 "Use WSL 2 instead of Hyper-V"(如果未自动勾选,可在安装后进入设置调整)。
- 安装完成后启动 Docker Desktop,它会初始化 WSL 后端并下载 Linux 引擎。
4. 验证安装
在 PowerShell 中运行:
docker --version
docker run hello-world
如果看到 "Hello from Docker!" 字样,说明部署成功。
方案二:使用传统 Hyper-V 后端(仅当无法使用 WSL 2 时)
如果你的服务器环境限制了 WSL 2(例如某些特定的旧版云镜像配置),或者你需要完全隔离的 Hyper-V 容器模式,可以使用此方法。这种方式通常称为"Windows 容器”或“混合模式”,兼容性略差于 WSL 2。
1. 启用 Hyper-V 角色
以管理员身份运行 PowerShell:
Install-WindowsFeature -Name Hyper-V -IncludeManagementTools -Restart
系统会提示重启,请确认。
2. 安装 Docker Engine (非 Desktop 版)
对于生产环境服务器,通常不建议安装图形化的 Docker Desktop,而是安装无头模式的 Docker Engine。
- 访问 Docker 官方文档获取 Windows Server 的 MSI 安装包:Docker Engine for Windows。
- 注意:Windows Server 2022 通常对应较新的 Docker 版本(如 24.x 或 25.x+)。
- 下载
.msi安装包。 - 命令行静默安装(示例):
# 将下载的 msi 路径替换为实际路径 Start-Process msiexec.exe -ArgumentList "/i Docker.msi", "/qn", "/norestart" -Wait
3. 配置与验证
安装完成后,Docker 服务会自动启动。同样通过 docker version 和 docker run hello-world 验证。
云服务器特别注意事项
在云服务器(如阿里云 ECS、腾讯云 CVM、AWS EC2 等)上部署时,还需注意以下几点:
-
网络与安全组:
- 确保云控制台的安全组规则已放行 Docker 所需的端口(通常是 TCP 2375, 2376 以及你业务容器的端口,如 80, 443, 8080 等)。
- 如果是 WSL 2 模式,Docker 会创建一个虚拟网卡,宿主机 IP 可能发生变化,请确保云厂商的网络配置允许流量转发。
-
存储驱动:
- WSL 2 模式下,Docker 数据存储在 WSL 虚拟机的虚拟磁盘文件中。如果云服务器挂载了额外的数据盘,建议在安装 Docker Desktop 或通过配置文件 (
daemon.json) 将数据存储目录指向挂载的数据盘,防止系统盘空间耗尽。
- WSL 2 模式下,Docker 数据存储在 WSL 虚拟机的虚拟磁盘文件中。如果云服务器挂载了额外的数据盘,建议在安装 Docker Desktop 或通过配置文件 (
-
License 限制:
- Docker Desktop 的免费许可证对大型商业团队有限制。如果是企业级大规模生产环境,建议评估是否直接使用 Docker Hub 的企业版或考虑迁移到 Linux 原生环境(部分云厂商提供带 Docker 预装的 Linux 镜像,这通常是更优解)。
-
替代方案思考:
- 如果你的业务主要运行 Linux 容器(绝大多数情况),在 Windows Server 上跑 Docker 会有性能损耗和管理复杂性。如果条件允许,强烈建议直接在云服务器上安装 Linux 发行版(如 Ubuntu 22.04 LTS 或 CentOS Stream 9),然后使用
curl -fsSL https://get.docker.com | sh一键安装 Docker,性能和稳定性远优于 Windows Server 方案。
- 如果你的业务主要运行 Linux 容器(绝大多数情况),在 Windows Server 上跑 Docker 会有性能损耗和管理复杂性。如果条件允许,强烈建议直接在云服务器上安装 Linux 发行版(如 Ubuntu 22.04 LTS 或 CentOS Stream 9),然后使用
总结
- 首选:在 Windows Server 2022 上启用 WSL 2 并安装 Docker Desktop,这是目前平衡性能与易用性的最佳方案。
- 备选:如果必须无图形界面且无法使用 WSL 2,则安装 Docker Engine for Windows 并依赖 Hyper-V。
- 最佳实践:如果项目不强制要求 Windows 宿主环境,请考虑切换到 Linux 云服务器 以发挥 Docker 的最大效能。
CLOUD技术博