在Windows Server 2022上如何部署Docker环境?

在 Windows Server 2022 上部署 Docker 环境,推荐使用 Docker Desktop for Windows(Server 版)Docker Engine(Windows Server 版)。由于 Windows Server 不支持完整的 Docker Desktop GUI(仅支持容器运行时),通常采用 Docker Engine 方案,通过命令行安装和管理。以下是详细步骤:


✅ 前提条件

  1. 系统版本:Windows Server 2022(Standard 或 Datacenter)
  2. 角色与功能:启用“容器”功能
  3. Hyper-V:建议启用(Docker 默认使用 Hyper-V 后端)
  4. 管理员权限:所有操作需以 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 已包含 ContainerdMicrosoft-Hyper-V-All 依赖项。若系统为 Core 版,则需手动安装 docker-engine MSI。


📦 步骤二:下载并安装 Docker Engine

方法 A:使用官方 MSI 安装包(推荐)

  1. 访问 Docker Engine for Windows Server
    → 下载最新版本的 Docker Engine for Windows Server (x64) MSI 文件
    (例如:docker-24.0.7-ce-windows-x86_64.msi

  2. 双击运行 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云枢 » 在Windows Server 2022上如何部署Docker环境?