在 Windows Server 2022 上部署 Docker 环境,推荐使用 Docker Desktop for Windows(Server 版) 或 Docker Engine(Windows Server 版)。由于 Windows Server 不支持完整的 Docker Desktop GUI(仅支持容器运行时),通常采用 Docker Engine 方案,通过命令行安装和管理。以下是详细步骤:
✅ 前提条件
- 系统版本:Windows Server 2022(Standard 或 Datacenter)
- 角色与功能:启用“容器”功能
- Hyper-V:建议启用(Docker 默认使用 Hyper-V 后端)
- 管理员权限:所有操作需以 Administrator 身份运行 PowerShell
🔧 步骤一:启用必要功能
以 管理员身份 打开 PowerShell,执行以下命令:
# 启用容器功能(包含 Containerd、WSL2 可选,但 Server 版推荐用 Hyper-V)
Enable-WindowsOptionalFeature -Online -FeatureName Containers-Enabled -All -Restart
# 启用 Hyper-V(若未启用)
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All -NoRestart
# 重启服务器(必须)
Restart-Computer
💡 注意:
Containers-Enabled已包含Containerd和Microsoft-Hyper-V-All依赖项。若系统为 Core 版,则需手动安装docker-engineMSI。
📦 步骤二:下载并安装 Docker Engine
方法 A:使用官方 MSI 安装包(推荐)
-
访问 Docker Engine for Windows Server
→ 下载最新版本的 Docker Engine for Windows Server (x64) MSI 文件
(例如:docker-24.0.7-ce-windows-x86_64.msi) -
双击运行 MSI,按向导完成安装(勾选 “Install Docker”)
方法 B:使用 PowerShell 脚本自动安装(适用于自动化部署)
# 下载 Docker Engine MSI
$url = "https://download.docker.com/win/static/stable/x86_64/docker-24.0.7-ce.zip"
$output = "$env:TEMPdocker.zip"
Invoke-WebRequest -Uri $url -OutFile $output
# 解压到临时目录
Expand-Archive -Path $output -DestinationPath "$env:TEMPdocker" -Force
# 复制 docker.exe 到系统路径
Copy-Item "$env:TEMPdockerdocker.exe" -Destination "C:Program FilesDockerbin" -Force
# 添加环境变量(可选,便于全局调用)
$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")
[Environment]::SetEnvironmentVariable("Path", $env:Path, [EnvironmentVariableTarget]::Machine)
# 启动 Docker 服务
Start-Service Docker
# 验证安装
docker --version
docker info
⚠️ 注意:上述脚本为简化示例;生产环境建议使用官方提供的 install script 或 MSI 安装包以确保完整性。
🧪 步骤三:验证安装
# 检查 Docker 版本
docker --version
# 测试运行 Hello World 容器
docker run hello-world
# 查看正在运行的容器
docker ps
✅ 成功输出应显示 Hello from Docker! 及容器列表。
🔐 步骤四(可选):配置镜像提速(国内用户必备)
编辑或创建配置文件:C:ProgramDataDockerconfigdaemon.json
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://huecker.io",
"https://dockerhub.timeweb.cloud"
],
"log-driver": "json-file",
"log-level": "info"
}
然后重启 Docker 服务:
Restart-Service Docker
🌐 提示:
docker.m.daocloud.io是常用国内镜像提速源(需网络可达);也可根据实际网络情况选择其他镜像仓库。
🛠️ 常见问题排查
| 问题 | 解决方案 |
|---|---|
docker : The term 'docker' is not recognized |
检查是否添加到 PATH;重新运行安装脚本或重启终端 |
Cannot connect to the Docker daemon |
确认 Docker 服务已启动:Get-Service Docker | Select-Object Status, Name |
| 容器无法拉取镜像 | 检查防火墙规则、DNS 设置;尝试 netsh advfirewall set allprofiles state off 临时测试 |
| Hyper-V 冲突 | 确保未同时开启 WSL2 后端(Server 版默认用 Hyper-V) |
📌 补充说明
-
Windows Server 2022 不支持 Docker Desktop 的完整 GUI 界面,仅支持 CLI 管理。
-
若需图形化界面(如 Portainer、Dashboard),可先部署一个轻量级容器来托管 UI:
docker run -d -p 9000:9000 --name=portainer portainer/portainer-ce然后浏览器访问
http://<server-ip>:9000 -
生产环境建议:
- 使用 Windows Server Container 而非 Linux Container(除非启用 WSL2 + Docker Desktop for Windows,但不推荐用于 Server 核心场景)
- 定期更新 Docker Engine 补丁
- 配置日志轮转(已在
daemon.json中默认启用)
需要我提供自动化部署脚本(PowerShell + Ansible)、Portainer 集成指南,或对比 Docker vs Podman on Server?欢迎继续提问!
CLOUD云枢