在 Windows Server 2022 上通过 PowerShell 安装 Docker,目前最推荐、最稳定且符合微软官方最佳实践的方式是使用 Docker Desktop for Windows(尽管它是桌面版软件,但完全支持服务器环境)或者直接使用 Docker Engine for Windows。
鉴于你是 IT 技术人员,追求的是生产环境的稳定性和可管理性,强烈推荐使用 Docker Engine (服务端模式),而不是 Docker Desktop。Docker Desktop 主要是为开发者和桌面用户设计的,虽然也能在服务器上跑,但在许可证、资源管理和后台服务控制上不如 Docker Engine 纯粹。
以下是使用 PowerShell 以管理员身份 安装 Docker Engine 的标准流程:
前置条件
- 操作系统要求:确保你的 Windows Server 2022 已启用 WSL 2 或 Hyper-V 后端。
- 对于 Server 2022,默认推荐使用 Hyper-V 作为容器运行时后端,性能更好且无需 WSL。
- 如果必须使用 Linux 容器,请确保已启用 Hyper-V 角色。
- 权限:必须以 Administrator 身份运行 PowerShell。
- 网络连接:能访问
hub.docker.com和 Microsoft 包源。
方法一:使用 Winget 安装(推荐,最简洁)
Windows Server 2022 预装了 winget(Windows Package Manager),这是微软官方推荐的现代包管理工具。
步骤 1:打开 PowerShell 并以管理员身份运行
# 检查 winget 是否可用
winget --version
如果未安装 winget,请先从 Microsoft Store 安装“Windows Package Manager”或使用离线安装包。
步骤 2:安装 Docker Engine
# 搜索 docker 相关包
winget search docker
# 通常选择 "Docker.DockerDesktop" 或 "Docker.DockerEngine"
# 注意:Docker Desktop 会同时安装 GUI 和 CLI,而 Docker Engine 只有 CLI 和服务
# 安装 Docker Engine(无头服务器模式推荐)
winget install --id Docker.DockerEngine -e --source winget
# 或者如果你需要 Docker Desktop(包含 GUI,适合有桌面的服务器)
# winget install --id Docker.DockerDesktop -e --source winget
注意:
-e表示接受许可协议,--source winget指定来源。
步骤 3:验证安装
docker --version
docker info
如果看到版本信息和容器状态,说明安装成功。
方法二:使用 Chocolatey 安装(传统方式,依然可靠)
如果你更熟悉 Chocolatey,这也是一个非常稳定的选择。
步骤 1:安装 Chocolatey(如果尚未安装)
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
步骤 2:安装 Docker
choco install docker-engine -y
步骤 3:重启 Docker 服务并验证
Restart-Service docker
docker --version
docker info
方法三:手动下载 MSI 包安装(离线/内网环境)
如果你的服务器无法直接访问互联网,需要从其他机器下载 MSI 包后上传到服务器。
步骤 1:下载 Docker Engine MSI
前往 Docker Hub 或 Docker 官网 下载最新版的 Docker.msi。
步骤 2:使用 PowerShell 静默安装
# 假设文件名为 Docker.msi,位于当前目录
Start-Process msiexec.exe -ArgumentList "/i Docker.msi /quiet ADDLOCAL=ToolboxFeature,DockerMainFeature" -Wait
参数说明:
/quiet:静默安装。ADDLOCAL=ToolboxFeature,DockerMainFeature:指定安装组件。在较新版本中,可能只需安装主功能。具体可根据 MSI 帮助文档调整。
步骤 3:启动服务
Start-Service docker
docker --version
关键配置与优化建议(针对 Windows Server 2022)
-
切换容器运行时后端:
Windows Server 2022 默认可能使用 Moby(旧版)或 Kubernetes(k8s)。建议切换到 Hyper-V 后端以获得最佳性能。# 查看当前配置 docker info | findstr "Server" # 如果需要修改,编辑 %ProgramData%dockerconfigdaemon.json # 添加或修改: { "features": { "containerd-snapshotter": true } } -
防火墙设置:
确保防火墙允许 Docker 所需的端口(如 2375, 2376 用于远程 API,或 80, 443 用于反向X_X等)。New-NetFirewallRule -DisplayName "Docker Daemon API" -Direction Inbound -Protocol TCP -LocalPort 2375,2376 -Action Allow -
资源限制:
在生产环境中,建议通过daemon.json限制 CPU、内存和日志大小,防止容器耗尽主机资源。{ "log-driver": "json-file", "log-opts": { "max-size": "10m", "max-file": "3" }, "storage-driver": "windowsfilter" } -
自动启动服务:
确保 Docker 服务设置为自动启动。Set-Service -Name docker -StartupType Automatic Start-Service docker
常见问题排查
-
错误:
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?- 在 Windows 上,这个错误通常表现为
error during connect: This error may indicate that the docker daemon is not running. - 解决方案:重启 Docker 服务 (
Restart-Service docker),并检查事件查看器中的应用程序日志。
- 在 Windows 上,这个错误通常表现为
-
错误:
hyper-v feature is required- 解决方案:启用 Hyper-V 角色。
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All然后重启服务器。
- 解决方案:启用 Hyper-V 角色。
-
镜像拉取慢:
- 配置国内镜像提速器(如阿里云、腾讯云等),在
daemon.json中添加registry-mirrors。
- 配置国内镜像提速器(如阿里云、腾讯云等),在
总结
对于 Windows Server 2022 的生产环境:
- 首选方案:使用
winget install --id Docker.DockerEngine安装 Docker Engine。 - 备用方案:使用 Chocolatey 或手动 MSI 安装。
- 避免使用:Docker Desktop 的 GUI 部分,除非你有明确的图形化管理需求。
- 核心要点:确保 Hyper-V 已启用,Docker 服务设为自动启动,并配置好日志轮转和资源限制。
这样部署的 Docker 环境更加轻量、稳定,便于通过脚本自动化管理,符合企业级运维规范。
CLOUD云枢