在阿里云的Windows Server服务器上如何安装Docker?

在阿里云 Windows Server 实例上安装 Docker,首先需要明确一个核心前提:Docker Desktop for Windows 是官方推荐的桌面端解决方案,但在服务器环境(尤其是 ECS 实例)中,我们通常不推荐直接使用它,因为它的资源开销较大且主要用于开发调试。

对于生产环境或纯服务器场景,更标准、轻量级的做法是使用 Docker Engine for Windows。以下是基于当前主流版本(Windows Server 2019/2022)的标准操作流程。

一、前置条件检查

  1. 操作系统要求:
    • Windows Server 2019 (建议安装最新累积更新)
    • Windows Server 2022
    • 注意:Windows Server 2016 支持有限,且内核较旧,不建议用于新部署。
  2. 启用容器功能:
    Docker 依赖 Windows 的 Hyper-V 和容器特性。
  3. 网络与安全组:
    确保阿里云 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 的性能、兼容性或运维复杂度不符合预期,强烈建议考虑以下架构调整:

  1. 迁移至 Linux 容器:

    • 大多数开源软件(Nginx, MySQL, Redis, Node.js 等)在 Linux 容器中表现更好、体积更小、启动更快。
    • 在阿里云 ECS 上,可部署 Linux 系统 + Docker Engine,或通过 Kubernetes (ACK) 统一管理。
  2. 使用阿里云容器镜像服务 ACI 或 ACK:

    • 无需自行维护 Windows 服务器上的 Docker 引擎。
    • 直接部署容器化应用到阿里云托管的 Kubernetes 集群中,享受弹性伸缩、高可用和自动运维能力。
  3. 保留 Windows 容器用于特定场景:

    • 仅当你的应用强依赖 .NET Framework、ASP.NET Core on Windows、IIS 等 Windows 专属技术栈时,才建议在 Windows Server 上运行 Docker。

总结

在阿里云 Windows Server 上安装 Docker 的核心流程是:

  1. 启用 Hyper-V 和容器功能;
  2. 使用 PowerShell 脚本安装 Docker Engine;
  3. 配置服务自启和安全组策略。

但对于绝大多数业务场景,优先推荐使用 Linux 环境的 Docker 或阿里云原生容器服务(ACK),以获得更好的性能、稳定性和生态支持。

未经允许不得转载:CLOUD云枢 » 在阿里云的Windows Server服务器上如何安装Docker?