在阿里云 Windows Server 实例上安装 Docker,首先需要明确一个核心前提:Docker Desktop for Windows 是官方推荐的桌面端解决方案,但在服务器环境(尤其是 ECS 实例)中,我们通常不推荐直接使用它,因为它的资源开销较大且主要用于开发调试。
对于生产环境或纯服务器场景,更标准、轻量级的做法是使用 Docker Engine for Windows。以下是基于当前主流版本(Windows Server 2019/2022)的标准操作流程。
一、前置条件检查
- 操作系统要求:
- Windows Server 2019 (建议安装最新累积更新)
- Windows Server 2022
- 注意:Windows Server 2016 支持有限,且内核较旧,不建议用于新部署。
- 启用容器功能:
Docker 依赖 Windows 的 Hyper-V 和容器特性。 - 网络与安全组:
确保阿里云 ECS 的安全组已开放必要端口(如 2375, 2376 用于远程管理,或业务所需端口)。
二、安装步骤(推荐方式:PowerShell 脚本自动化)
微软官方提供了通过 PowerShell 一键安装的脚本,这是最稳定、最符合服务器规范的方式。
步骤 1:以管理员身份运行 PowerShell
右键点击“开始”菜单 → 选择 “Windows PowerShell (管理员)” 或 “终端(管理员)”。
步骤 2:执行安装脚本
复制以下命令并粘贴到 PowerShell 窗口中,按回车执行:
# 设置变量
$dockerInstallDir = "C:Program FilesDocker"
$dockerVersion = "24.0.7" # 可根据需要修改为最新版本,建议查看 https://github.com/docker/cli/releases
# 创建安装目录
New-Item -ItemType Directory -Force -Path $dockerInstallDir
# 下载 Docker Engine MSI 安装包
$url = "https://download.docker.com/win/static/stable/x86_64/docker-$dockerVersion.msi"
$output = "$dockerInstallDirdocker.msi"
Write-Host "Downloading Docker Engine..."
Invoke-WebRequest -Uri $url -OutFile $output
# 安装 Docker Engine
Write-Host "Installing Docker Engine..."
Start-Process msiexec.exe -ArgumentList "/i `"$output`" /quiet ADDLOCAL=Feature_core,Feature_cli,Feature_compose-plugin,Feature_provider-npipe" -Wait -NoNewWindow
# 清理安装包
Remove-Item $output -Force
Write-Host "Docker Engine installed successfully."
说明:
- 上述脚本安装的是 Docker Engine,不包含 Docker Desktop 的 GUI 界面,更适合服务器后台运行。
- 如果你希望使用图形化界面进行镜像管理、日志查看等,可以额外安装 Docker Desktop,但需接受其较高的资源占用。
步骤 3:验证安装
安装完成后,在 PowerShell 中运行:
docker --version
docker info
如果输出正常,说明引擎已就绪。
三、配置 Docker 服务自启动与远程访问(可选但推荐)
1. 设置 Docker 服务自动启动
Set-Service -Name com.docker.service -StartupType Automatic
Start-Service -Name com.docker.service
2. 启用 TCP 监听(用于其他机器远程连接此 Docker 引擎)
⚠️ 安全警告:默认情况下,Docker API 监听在 Unix socket 或 named pipe 上。若需远程访问,必须启用 TCP 监听,但这会带来安全风险。请务必配合防火墙和安全组限制 IP。
编辑或创建配置文件 %programdata%dockerconfigdaemon.json:
{
"hosts": ["npipe://", "tcp://0.0.0.0:2375"],
"log-level": "info"
}
然后重启 Docker 服务:
Restart-Service docker
注意:阿里云 ECS 默认不允许从公网直接访问 2375 端口。你需要在阿里云控制台的安全组中,仅允许特定内网 IP 或跳板机 IP 访问该端口,切勿对 0.0.0.0:2375 开放公网权限。
四、常见问题与排查
1. 错误:“Hyper-V 未启用” 或 “容器功能缺失”
Docker on Windows 依赖 Hyper-V 虚拟化技术。请确保:
- BIOS/UEFI 中已开启 VT-x/AMD-V。
- 在 PowerShell 中运行:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All Enable-WindowsOptionalFeature -Online -FeatureName Containers -All - 重启服务器后再次尝试安装。
2. 错误:“无法连接到 Docker daemon”
- 检查服务是否正在运行:
Get-Service docker - 检查事件查看器(Event Viewer)→ Windows 日志 → 应用程序,查找 Docker 相关错误。
- 如果是 Windows Server 2019 早期版本,可能需要安装 KB4534133 等补丁以支持较新的 Docker 版本。
3. 性能问题:IO 延迟高
Windows 上的 Docker 使用 MobyLinuxVM(基于 Hyper-V 的 Linux 虚拟机)来运行容器。由于文件系统在跨平台时存在性能损耗,建议:
- 将数据卷挂载到 NTFS 文件系统之外的路径(如使用 SMB 共享或本地磁盘分区)。
- 避免在容器内频繁进行大量小文件读写操作。
- 考虑使用 WSL2 后端(如果适用),但 Windows Server 目前对 WSL2 的支持不如客户端 Windows 完善,仍推荐使用 Hyper-V 模式。
五、替代方案建议
如果你发现 Windows 上 Docker 的性能、兼容性或运维复杂度不符合预期,强烈建议考虑以下架构调整:
-
迁移至 Linux 容器:
- 大多数开源软件(Nginx, MySQL, Redis, Node.js 等)在 Linux 容器中表现更好、体积更小、启动更快。
- 在阿里云 ECS 上,可部署 Linux 系统 + Docker Engine,或通过 Kubernetes (ACK) 统一管理。
-
使用阿里云容器镜像服务 ACI 或 ACK:
- 无需自行维护 Windows 服务器上的 Docker 引擎。
- 直接部署容器化应用到阿里云托管的 Kubernetes 集群中,享受弹性伸缩、高可用和自动运维能力。
-
保留 Windows 容器用于特定场景:
- 仅当你的应用强依赖 .NET Framework、ASP.NET Core on Windows、IIS 等 Windows 专属技术栈时,才建议在 Windows Server 上运行 Docker。
总结
在阿里云 Windows Server 上安装 Docker 的核心流程是:
- 启用 Hyper-V 和容器功能;
- 使用 PowerShell 脚本安装 Docker Engine;
- 配置服务自启和安全组策略。
但对于绝大多数业务场景,优先推荐使用 Linux 环境的 Docker 或阿里云原生容器服务(ACK),以获得更好的性能、稳定性和生态支持。
CLOUD云枢