在 Windows Server 2022 上部署 Docker 是完全可行的,但需要注意一个核心概念:Windows Server 上的 Docker 默认运行的是 Windows 容器(基于 Windows 内核),而不是 Linux 容器。如果你需要运行标准的 Linux 镜像(如大多数开源项目、Node.js、Python 等),通常有两种方案:
- 使用 WSL 2 (推荐):利用 Windows Subsystem for Linux 2,这是目前最稳定、性能最好的方式,能完美运行 Linux 容器。
- 直接使用 Docker Desktop for Windows (或 Server 版):通过 Hyper-V 或 WSL 2 后端自动管理 Linux 容器。
以下是针对 Windows Server 2022 的两种主流部署方案。
方案一:使用 WSL 2 + Docker Engine (推荐用于生产环境)
这是微软官方推荐的现代架构。WSL 2 提供了真正的 Linux 内核,Docker 可以像原生 Linux 服务器一样运行 Linux 容器,性能损耗极低。
1. 启用 WSL 2
打开 PowerShell (管理员模式),依次执行以下命令:
# 启用必要的功能并重启
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
# 设置默认版本为 WSL 2
wsl --set-default-version 2
注意:执行完上述命令后,建议重启服务器。
2. 安装 Linux 发行版
在 Microsoft Store 中搜索并安装 Ubuntu (或其他你喜欢的发行版)。如果没有商店访问权限,可以使用命令行下载:
wsl --install -d Ubuntu
安装完成后首次启动会提示设置用户名和密码。
3. 安装 Docker Engine (Linux 版)
进入刚安装的 Ubuntu 子系统 (wsl),然后按照标准的 Linux Docker 安装步骤进行:
# 更新包索引
sudo apt-get update
# 安装依赖工具
sudo apt-get install -y ca-certificates curl gnupg lsb-release
# 添加 Docker 官方 GPG 密钥
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# 设置仓库
echo
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 安装 Docker Engine
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
4. 配置非 root 用户运行 Docker (可选但推荐)
为了避免每次都要加 sudo,将当前用户加入 docker 组:
sudo usermod -aG docker $USER
# 退出并重新登录 wsl 使组生效
exit
5. 验证安装
docker run hello-world
如果看到欢迎信息,说明 Linux 容器环境已就绪。
方案二:使用 Docker Desktop (适合开发/测试环境)
如果你更倾向于图形化界面或不想手动配置 Linux 子系统,可以直接安装 Docker Desktop。它会自动处理 WSL 2 后端和容器的隔离。
注意:Docker Desktop 的免费版仅限个人学习和开发,商业生产环境可能需要付费订阅。对于纯服务器环境,通常建议使用方案一(Docker Engine)以节省资源。
- 开启 Hyper-V 或 WSL 2 支持:确保系统已开启虚拟化功能。
- 下载并安装:前往 Docker 官网下载适用于 Windows 的安装包。
- 安装过程:
- 选择 "Use WSL 2 instead of Hyper-V" (推荐使用 WSL 2 以获得更好性能)。
- 安装完成后启动 Docker Desktop。
- 切换容器类型:
- 在 Docker Desktop 界面右上角,点击鲸鱼图标旁边的菜单,选择 "Switch to Linux containers"。
- 等待服务重启,即可拉取和运行 Linux 镜像。
关键区别与注意事项
| 特性 | 方案一 (WSL 2 + Docker Engine) | 方案二 (Docker Desktop) |
|---|---|---|
| 适用场景 | 生产环境、高性能需求、无 GUI 服务器 | 本地开发、测试、学习 |
| 资源占用 | 低 (仅后台进程) | 较高 (包含 GUI 组件和管理面板) |
| 成本 | 免费 | 商业授权可能受限 |
| 网络配置 | 需手动配置端口映射 | 自动管理,较简单 |
| 文件系统 | 挂载到 WSL 文件系统,性能极佳 | 文件同步可能有轻微开销 |
常见问题排查
-
无法拉取镜像:
- 检查服务器是否能访问网络(Docker Hub)。
- 如果是内网环境,需要配置国内镜像提速器(如阿里云、腾讯云镜像提速地址),修改
/etc/docker/daemon.json。
-
内存不足:
- Windows Server 2022 本身占用较多内存。请确保分配给 WSL 2 足够的内存限制。可以在
%USERPROFILE%.wslconfig文件中配置:[wsl2] memory=8GB swap=4GB
- Windows Server 2022 本身占用较多内存。请确保分配给 WSL 2 足够的内存限制。可以在
-
Windows 容器 vs Linux 容器:
- 如果你直接安装 Docker 而不启用 WSL 2 后端,默认是 Windows 容器。此时只能运行
mcr.microsoft.com/windows/servercore等镜像。 - 务必确认你的业务镜像是 Linux 构建的,如果是,必须使用上述方案切换到 Linux 容器模式。
- 如果你直接安装 Docker 而不启用 WSL 2 后端,默认是 Windows 容器。此时只能运行
总结建议
- 如果是生产环境的云服务器:强烈建议采用 方案一 (WSL 2 + Docker Engine)。它轻量、稳定、完全免费且符合云原生最佳实践。
- 如果是本地开发机:使用 Docker Desktop 会更便捷。
部署完成后,你可以像操作普通 Linux 服务器一样使用 docker pull, docker run, docker-compose up 等命令了。
CLOUD云枢