先泼盆冷水:在 Windows Server 上装 Docker,绝大多数情况下是“为了用而用”,而不是“必须这么干”。
如果你是为了跑微服务、CI/CD 或者跨平台应用,强烈建议直接上 Linux(Ubuntu/CentOS/Alibaba Cloud Linux)。Windows 版的 Docker Desktop 或 Docker Engine 在性能损耗、资源占用和稳定性上,跟原生 Linux 环境不在一个量级。
但既然你问的是“怎么在阿里云 Windows Server 上装”,我就按你的需求,把最稳妥的路径拆解开。这里分两种情况:Docker Desktop for Windows(适合开发/测试)和 Docker Engine(适合生产/轻量级)。
方案一:Docker Desktop for Windows(推荐新手/开发者)
这是微软官方维护的方案,基于 WSL2(Windows Subsystem for Linux 2),体验最接近原生,图形界面友好,管理方便。
前置条件
- 系统版本:必须是 Windows Server 2019 或更高版本(Server 2022 最佳)。
- 虚拟化开启:这是核心坑点。阿里云 ECS 实例默认可能没开硬件虚拟化。你需要确认你的实例规格支持嵌套虚拟化(Nested Virtualization)。
- 操作:控制台 -> 实例详情 -> 更多 -> 安全组/网络 -> 查看是否支持嵌套虚拟化。如果不支持,这方案直接放弃。
- 内存预留:Docker Desktop 默认会占用较多内存(通常 2-4GB 起步),确保你的实例配置够格。
安装步骤
-
启用 WSL2
- 以管理员身份打开 PowerShell,运行:
wsl --install - 重启服务器。
- 再次运行
wsl --set-default-version 2确保默认使用 WSL2。
- 以管理员身份打开 PowerShell,运行:
-
下载 Docker Desktop
- 去官网下载
Docker Desktop for Windows。注意:选择支持 Windows Server 的版本(部分旧版不支持 Server,需找最新 Preview 或稳定版)。 - 安装时勾选 "Use WSL 2 instead of Hyper-V"。
- 去官网下载
-
启动与验证
- 启动 Docker Desktop,等待引擎就绪。
- 打开 PowerShell 执行
docker version和docker run hello-world。 - 如果看到 Hello World 打印出来,说明通了。
阿里云特供坑点
- 磁盘空间:WSL2 的虚拟硬盘文件(ext4.vhdx)会动态增长,但不会自动收缩。用久了你会发现 C 盘爆满。需要手动执行
wsl --shutdown后,使用脚本或工具压缩 vhdx 文件,或者定期清理无用镜像。 - 网络模式:Docker Desktop 默认使用 NAT 模式,端口映射没问题,但内部容器间通信可能需要额外配置。
方案二:Docker Engine + Windows Containers(适合老派/特定场景)
如果你不想用 WSL2,或者需要运行纯 Windows 容器(比如 .NET Framework 应用),可以用这个方案。但注意:Linux 容器在 Windows 上是通过 Moby 虚拟机运行的,性能极差,不推荐。
安装步骤
-
启用容器功能
- 打开“服务器管理器” -> “管理” -> “添加角色和功能”。
- 找到“容器”选项,勾选并安装。
- 重启服务器。
-
安装 Docker Engine
- 下载 Docker MSI 安装包(从 Docker Hub 获取)。
- 运行安装程序,选择“Install Docker Engine on Windows”。
- 安装完成后,服务会自动启动。
-
切换容器类型
- 默认可能是 Linux 容器(如果在 WSL 环境下)或 Windows 容器。
- 右键托盘图标 -> Settings -> General -> Switch to Windows containers / Linux containers。
- 警告:Windows 容器之间隔离性差,共享内核,安全性低;且只支持特定版本的 Windows Server 基础镜像。
关键避坑指南(血泪经验)
-
别在生产环境用 Docker Desktop
- Docker Desktop 是面向开发者的,有授权限制(企业用户需付费),后台进程多,资源消耗大。
- 如果是生产环境,请考虑:
- 换 Linux 系统:阿里云 ECS 提供 Ubuntu/CentOS/Alibaba Cloud Linux,一键安装 Docker,性能榨干硬件。
- 使用 Kubernetes (ACK):如果业务复杂,直接用阿里云 ACK 托管 K8s,比自己在 Windows 上管 Docker 省心十倍。
-
端口冲突
- Windows 本身占用了大量端口(如 80, 443, 53, 135-139 等)。Docker 默认桥接网络可能与宿主机冲突。
- 解决方案:使用
docker network create创建自定义网络,避免使用默认的nat网络,或调整宿主机的防火墙规则。
-
权限问题
- Windows 容器对路径大小写敏感(取决于文件系统),而 Linux 容器不敏感。混用容易出诡异 bug。
- 挂载卷(Volume)时,Windows 路径格式(
C:data)在 Linux 容器中无法直接识别,需用/var/lib/docker/volumes/...或通过命名卷管理。
-
阿里云安全组
- 别忘了在阿里云控制台配置安全组,放行你容器暴露的端口(如 8080, 3306 等),否则网络访问不了。
终极建议
如果你的业务允许,请卸载 Docker Desktop,重装为 Linux 系统。
理由:
- 性能:Linux 原生运行 Docker,无虚拟化开销。
- 生态:90% 的开源项目、教程、镜像都是为 Linux 优化的。
- 成本:同等配置下,Linux 能跑更多容器,更省钱。
如果必须用 Windows,且只是个人学习或小规模测试,WSL2 + Docker Desktop 是目前唯一可行的舒适路径。记得定期清理 WSL2 磁盘空间,别等 C 盘红了再哭。
CLOUD云计算