在 Windows Server 上安装 Docker,最推荐且官方支持的方式是使用 Docker Desktop for Windows。虽然它通常用于开发环境,但在生产环境的 Windows Server(2016/2019/2022)上也可以运行,不过需要注意资源占用和许可协议。
如果你的场景是纯生产环境且追求极致性能或稳定性,微软也提供了基于 Windows Containers 的原生方案(即不使用 Docker Desktop,而是直接配置容器引擎)。
以下是两种主流方案的详细步骤:
方案一:使用 Docker Desktop(推荐用于开发、测试或小型服务)
这是最简单的方法,类似于在普通 Windows 上安装,但需要确保服务器满足特定条件。
1. 前置检查
- 操作系统版本:必须是 Windows Server 2016, 2019 或 2022。
- 虚拟化支持:确保 BIOS/UEFI 中已开启虚拟化技术(VT-x/AMD-V),并在 Hyper-V 管理器中确认 Hyper-V 功能已启用。
- 内存要求:建议至少 4GB RAM(推荐 8GB+),因为 Docker Desktop 本身会占用一定资源。
2. 下载与安装
- 访问 Docker Desktop 官网。
- 下载 Windows (x86_64) 版本的安装包(注意:如果是在云控制台无法直接下载,可能需要通过 SSH 或远程桌面将文件上传到服务器)。
- 运行安装程序,按照向导操作。
- 在安装选项中,务必勾选 "Use the WSL 2 backend"(如果你安装了 WSL 2)或 "Use the Hyper-V engine"。在 Windows Server 上,通常默认使用 Hyper-V 模式。
- 安装完成后重启服务器。
3. 验证安装
打开 PowerShell(管理员身份),输入以下命令:
docker --version
docker run hello-world
如果看到 Hello from Docker! 的欢迎信息,说明安装成功。
⚠️ 重要提示:Docker Desktop 主要用于开发和测试。在生产环境中,由于它是为桌面体验设计的,可能包含不必要的后台进程,且其免费许可证在某些商业场景下可能受限。如果是大规模生产部署,建议参考方案二。
方案二:原生 Windows Container 引擎(推荐用于生产环境)
如果你不需要 Docker Desktop 的图形界面,只想在服务器上运行轻量级的容器引擎,可以使用微软官方的 Windows Containers 脚本进行安装。这种方式更贴近 Linux 上的 Docker Engine 行为。
1. 开启 Hyper-V 和容器功能
以管理员身份运行 PowerShell,执行以下命令启用必要的功能:
# 启用 Hyper-V
Install-WindowsFeature -Name Hyper-V -IncludeManagementTools -Restart
# 启用容器功能(Windows Server 2019/2022 通常自动包含,但显式启用更稳妥)
Install-WindowsFeature -Name Containers -Restart
系统可能会要求重启,请根据提示操作。
2. 下载并安装 Docker Engine
微软不再提供传统的 MSI 安装包,推荐使用 PowerShell 脚本 从 GitHub 拉取最新稳定版。
- 打开 PowerShell(管理员),复制以下代码块并粘贴执行(会自动下载并安装最新版):
$ErrorActionPreference = "Stop"
# 设置变量
$dockerVersion = "24.0.7" # 可根据需要替换为最新版本号
$dockerUrl = "https://download.docker.com/win/static/stable/x86_64/docker-$dockerVersion.zip"
$installDir = "C:Program FilesDocker"
# 创建目录
New-Item -ItemType Directory -Force -Path $installDir | Out-Null
# 下载 Docker
Write-Host "Downloading Docker..."
Invoke-WebRequest -Uri $dockerUrl -OutFile "$env:TEMPdocker.zip"
# 解压
Expand-Archive -Path "$env:TEMPdocker.zip" -DestinationPath "$installDir" -Force
# 添加环境变量
[System.Environment]::SetEnvironmentVariable("PATH", "$installDirdocker;${env:PATH}", [System.EnvironmentVariableTarget]::Machine)
# 刷新当前会话的环境变量
$env:PATH = [System.Environment]::GetEnvironmentVariable("PATH","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("PATH","User")
Write-Host "Installation complete. Restarting PowerShell session recommended."
注意:上述脚本使用的是 Docker 官方提供的静态二进制包(类似 Linux 的 tarball),这在 Windows Server 上是最轻量的方式。
3. 启动 Docker 守护进程
安装完成后,你需要手动启动 Docker 服务(Docker Desktop 会自动管理,但原生安装需要手动启动):
# 启动 Docker 服务
Start-Service docker
# 或者在 PowerShell 中直接运行 daemon(如果服务未注册)
& "$installDirdockerdockerd.exe"
4. 验证安装
docker --version
docker run hello-world
常见问题与注意事项
-
镜像选择:
- 在 Windows Server 上,Docker 默认运行的是 Windows 容器镜像(例如
mcr.microsoft.com/windows/nanoserver或mcr.microsoft.com/windows/servercore)。 - 如果你想运行 Linux 容器(如
nginx,mysql),必须开启 WSL 2 后端(仅限 Docker Desktop)或使用特定的 Linux 兼容层,但这在纯 Windows Server 生产环境中较为复杂且性能不如原生 Linux 容器。
- 在 Windows Server 上,Docker 默认运行的是 Windows 容器镜像(例如
-
网络配置:
- 云服务器通常有安全组限制。安装 Docker 后,如果需要暴露端口(如 80, 443),请务必在云厂商的控制台(阿里云/腾讯云/AWS 等)的安全组规则中放行相应端口。
-
持久化存储:
- Windows 容器的数据卷路径通常在
C:ProgramDataDocker或挂载的卷中。建议在云服务器上挂载额外的数据盘来存放容器数据,防止系统盘爆满。
- Windows 容器的数据卷路径通常在
-
替代方案思考:
- 如果你的业务主要依赖 Linux 生态(绝大多数情况),强烈建议在云厂商处直接购买一台 Linux (Ubuntu/CentOS) 虚拟机,然后在上面安装 Docker。Linux 下的 Docker 性能更好、资源占用更低、社区支持更完善,也是目前业界的标准做法。
总结建议:
- 开发/学习/小规模试用:直接使用 Docker Desktop。
- 生产环境/高性能需求:考虑使用 Linux 云服务器 安装 Docker;如果必须用 Windows Server,请使用 方案二(原生引擎)。
云知道CLOUD