努力
奋斗

在阿里云的windows server安装docker?

服务器价格表

先泼盆冷水:在 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),体验最接近原生,图形界面友好,管理方便。

前置条件

  1. 系统版本:必须是 Windows Server 2019 或更高版本(Server 2022 最佳)。
  2. 虚拟化开启:这是核心坑点。阿里云 ECS 实例默认可能没开硬件虚拟化。你需要确认你的实例规格支持嵌套虚拟化(Nested Virtualization)。
    • 操作:控制台 -> 实例详情 -> 更多 -> 安全组/网络 -> 查看是否支持嵌套虚拟化。如果不支持,这方案直接放弃。
  3. 内存预留:Docker Desktop 默认会占用较多内存(通常 2-4GB 起步),确保你的实例配置够格。

安装步骤

  1. 启用 WSL2

    • 以管理员身份打开 PowerShell,运行:
      wsl --install
    • 重启服务器。
    • 再次运行 wsl --set-default-version 2 确保默认使用 WSL2。
  2. 下载 Docker Desktop

    • 去官网下载 Docker Desktop for Windows。注意:选择支持 Windows Server 的版本(部分旧版不支持 Server,需找最新 Preview 或稳定版)。
    • 安装时勾选 "Use WSL 2 instead of Hyper-V"。
  3. 启动与验证

    • 启动 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 虚拟机运行的,性能极差,不推荐。

安装步骤

  1. 启用容器功能

    • 打开“服务器管理器” -> “管理” -> “添加角色和功能”。
    • 找到“容器”选项,勾选并安装。
    • 重启服务器。
  2. 安装 Docker Engine

    • 下载 Docker MSI 安装包(从 Docker Hub 获取)。
    • 运行安装程序,选择“Install Docker Engine on Windows”。
    • 安装完成后,服务会自动启动。
  3. 切换容器类型

    • 默认可能是 Linux 容器(如果在 WSL 环境下)或 Windows 容器。
    • 右键托盘图标 -> Settings -> General -> Switch to Windows containers / Linux containers。
    • 警告:Windows 容器之间隔离性差,共享内核,安全性低;且只支持特定版本的 Windows Server 基础镜像。

关键避坑指南(血泪经验)

  1. 别在生产环境用 Docker Desktop

    • Docker Desktop 是面向开发者的,有授权限制(企业用户需付费),后台进程多,资源消耗大。
    • 如果是生产环境,请考虑:
      • 换 Linux 系统:阿里云 ECS 提供 Ubuntu/CentOS/Alibaba Cloud Linux,一键安装 Docker,性能榨干硬件。
      • 使用 Kubernetes (ACK):如果业务复杂,直接用阿里云 ACK 托管 K8s,比自己在 Windows 上管 Docker 省心十倍。
  2. 端口冲突

    • Windows 本身占用了大量端口(如 80, 443, 53, 135-139 等)。Docker 默认桥接网络可能与宿主机冲突。
    • 解决方案:使用 docker network create 创建自定义网络,避免使用默认的 nat 网络,或调整宿主机的防火墙规则。
  3. 权限问题

    • Windows 容器对路径大小写敏感(取决于文件系统),而 Linux 容器不敏感。混用容易出诡异 bug。
    • 挂载卷(Volume)时,Windows 路径格式(C:data)在 Linux 容器中无法直接识别,需用 /var/lib/docker/volumes/... 或通过命名卷管理。
  4. 阿里云安全组

    • 别忘了在阿里云控制台配置安全组,放行你容器暴露的端口(如 8080, 3306 等),否则网络访问不了。

终极建议

如果你的业务允许,请卸载 Docker Desktop,重装为 Linux 系统。

理由:

  • 性能:Linux 原生运行 Docker,无虚拟化开销。
  • 生态:90% 的开源项目、教程、镜像都是为 Linux 优化的。
  • 成本:同等配置下,Linux 能跑更多容器,更省钱。

如果必须用 Windows,且只是个人学习或小规模测试,WSL2 + Docker Desktop 是目前唯一可行的舒适路径。记得定期清理 WSL2 磁盘空间,别等 C 盘红了再哭。