在阿里云的 Windows 服务器上创建和运行 Docker,需要根据你使用的 Windows Server 版本以及是否支持 Docker 来进行配置。以下是详细的步骤说明:
✅ 前提条件
-
操作系统要求:
- 支持的 Windows Server 版本(如:Windows Server 2016、2019、2022)。
- 必须是 Datacenter 或 Standard 版本,且支持容器功能。
- 推荐使用 Windows Server 2019/2022 Datacenter。
-
实例规格:
- 确保你的 ECS 实例有足够的内存(建议至少 4GB+)和磁盘空间。
-
管理员权限:
- 需要以管理员身份运行 PowerShell 或 CMD。
🛠️ 步骤一:启用容器功能
1. 打开 PowerShell(以管理员身份运行)
# 安装容器功能
Install-WindowsFeature -Name Containers
⚠️ 如果提示找不到该功能,请确认系统版本是否支持。
2. 重启服务器(可选但推荐)
Restart-Computer -Force
🐳 步骤二:安装 Docker Engine(Windows 版)
Windows 上的 Docker 分为两种模式:
- Windows 容器(原生)
- Linux 容器(通过 WSL2 + Docker Desktop,仅适用于 Win10/Win11,不推荐用于 Server)
在 Windows Server 上,我们通常只使用 原生 Windows 容器。
方法一:使用 Microsoft 提供的脚本安装 Docker
# 下载并运行 Docker 提供的安装脚本
Invoke-WebRequest "https://github.com/docker/docker-ce/releases/download/v20.10.17/docker-20.10.17.tgz" -OutFile "docker-20.10.17.tgz"
# 解压到 C:Program Filesdocker
tar -xvf docker-20.10.17.tgz -C "C:Program Files"
# 添加 Docker 到系统路径
[Environment]::SetEnvironmentVariable("Path", $env:Path + ";C:Program Filesdocker", [EnvironmentVariableTarget]::Machine)
# 重新加载环境变量
$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")
# 注册 Docker 服务
.dockerd --register-service
💡 注意:版本号
v20.10.17可能会更新,请查看 Docker CE for Windows 获取最新稳定版。
启动 Docker 服务
Start-Service docker
设置开机自启
Set-Service docker -StartupType Automatic
🧪 步骤三:验证 Docker 是否正常工作
docker version
你应该看到类似输出:
Client:
Version: 20.10.17
API version: 1.41
...
Server:
Engine:
Version: 20.10.17
API version: 1.41 (minimum version 1.24)
🐳 运行第一个容器(Windows 容器示例)
docker run hello-world:nanoserver
或者运行 IIS 容器测试:
docker run -d -p 80:80 mcr.microsoft.com/windows/servercore/iis
然后访问服务器公网 IP,看是否显示 IIS 欢迎页。
🔒 防火墙与安全组设置
确保阿里云控制台中:
- 安全组规则允许入方向端口 80、443、3389(RDP)等所需端口。
- Windows 防火墙也放行对应端口(可通过 PowerShell 或 GUI 设置)。
❌ 常见问题及解决
| 问题 | 解决方案 |
|---|---|
Install-WindowsFeature Containers 失败 |
检查系统是否为 Server 版本,非 Core 不支持 |
| Docker 无法启动 | 查看日志:Get-EventLog -LogName Application -Source Docker -After (Get-Date).AddMinutes(-5) |
| 镜像拉取慢 | 使用国内镜像X_X器(但目前对 Windows 镜像支持有限) |
⚠️ 注意:微软官方的 Windows 容器镜像较大(如 servercore、nanoserver),下载较慢,建议提前准备或使用私有镜像仓库。
✅ 推荐实践
- 使用 Windows Server Core + Docker 构建轻量应用。
- 尽量避免混合使用 Linux 容器(在 Windows Server 上性能差且复杂)。
- 考虑使用 Kubernetes + Windows 节点(ACK 支持 Windows 节点)进行编排。
📚 参考文档
- Docker 官方文档(Windows):https://docs.docker.com/engine/installation/windows/
- Microsoft 容器文档:https://learn.microsoft.com/en-us/virtualization/windowscontainers/
- 阿里云 ECS 文档:https://help.aliyun.com/product/25365.html
如果你希望更现代化的方式管理容器,也可以考虑:
✅ 使用阿里云容器服务 ACK(支持 Windows 节点)
👉 创建 Kubernetes 集群并添加 Windows ECS 实例作为节点,统一管理容器化应用。
如有具体需求(如部署 ASP.NET 应用、SQL Server 容器等),欢迎继续提问!
CDNK博客