在 Windows Server 上安装 Docker,目前最推荐的方式是安装 Docker Desktop for Windows(它基于 WSL 2 或 Hyper-V),或者直接使用 Docker Engine for Windows。
由于 Windows Server 通常用于生产环境,且默认可能未开启虚拟化功能,以下是两种主流方案的详细步骤。
方案一:使用 Docker Desktop for Windows(推荐,适合开发/测试)
这是最简单的方式,图形化界面友好,自动处理了底层依赖。但请注意,Docker Desktop 的商业许可条款对部分大规模生产场景有限制,如果是纯生产环境且无 GUI,建议看方案二。
1. 前置条件检查
在开始之前,请确保你的 Windows Server 满足以下条件:
- 操作系统:Windows Server 2016, 2019, 或 2022。
- 虚拟化支持:必须在 BIOS/UEFI 中开启 VT-x/AMD-V 虚拟化技术。
- WSL 2 (可选但推荐):如果系统较新,Docker Desktop 会自动配置 WSL 2 后端。
- Hyper-V:需要启用 Hyper-V 角色(Docker Desktop 安装时会自动尝试启用)。
2. 下载与安装
- 访问 Docker 官网下载页。
- 下载
Docker Desktop.exe。 - 以管理员身份运行安装程序。
- 按照向导点击 "Next" 和 "Install"。
- 在安装选项中,勾选 "Use WSL 2 instead of Hyper-V"(如果可用,性能更好)。
- 安装完成后,点击 Finish,然后重启服务器(必须重启以加载虚拟化驱动)。
3. 验证安装
重启后,打开 PowerShell(管理员模式),输入以下命令:
docker --version
docker run hello-world
如果看到 "Hello from Docker!" 的欢迎信息,说明安装成功。
方案二:使用 Docker Engine(适合生产环境/无 GUI 服务器)
如果你不需要图形界面,或者 Docker Desktop 不符合商业许可要求,可以直接安装 Docker Engine。这需要手动配置 WSL 2 或 Hyper-V 后端。
1. 启用必要功能
首先需要在 PowerShell(管理员)中启用 Hyper-V 和容器功能:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
# 对于 Server 2019/2022,通常还需要启用容器功能
Enable-WindowsOptionalFeature -Online -FeatureName Containers
执行后需重启服务器。
2. 下载并安装 Docker Engine MSI
-
访问微软官方镜像库或 Docker Hub 获取适用于 Windows Server 的 MSI 安装包。
- 通常路径为:
https://download.docker.com/win/static/stable/x86_64/(注意:这里通常是静态版本,生产环境更推荐通过脚本安装)。 - 更推荐的方式:使用官方提供的 PowerShell 脚本进行自动化安装(无需手动下载 MSI)。
- 通常路径为:
-
在 PowerShell(管理员)中运行以下脚本来安装最新版本的 Docker Engine:
# 设置环境变量以便后续使用 $env:DOCKER_VERSION = "stable" # 下载并运行安装脚本 Invoke-WebRequest -Uri "https://raw.githubusercontent.com/microsoft/Windows-Containers/main/tools/DockerInstall.ps1" -OutFile "DockerInstall.ps1" .DockerInstall.ps1(注:如果上述脚本无法直接运行,也可以手动下载对应的
.msi文件,例如docker-<version>.msi,然后双击安装。)
3. 配置 WSL 2 后端(关键步骤)
Docker Engine on Windows 强烈建议使用 WSL 2 后端以获得最佳性能和 Linux 兼容性。
- 确保已安装 WSL 2:
wsl --install -d Ubuntu(如果是首次安装,可能需要重启)
- 将默认版本设置为 WSL 2:
wsl --set-default-version 2
4. 验证安装
同样在 PowerShell 中运行:
docker version
docker run hello-world
常见问题与注意事项
-
权限问题:
- 如果在运行
docker run时遇到 "Access Denied" 错误,请确保当前用户属于docker-users组,或者以管理员身份运行终端。 - 在 Windows Server 上,有时需要将用户添加到本地组:
net localgroup docker-users <用户名> /add
- 如果在运行
-
网络配置:
- Windows Server 作为云服务器时,防火墙可能会拦截 Docker 端口。如果容器无法联网,请检查安全组规则(云厂商控制台)和本地防火墙(允许
docker0,nat,bridge等虚拟网卡流量)。
- Windows Server 作为云服务器时,防火墙可能会拦截 Docker 端口。如果容器无法联网,请检查安全组规则(云厂商控制台)和本地防火墙(允许
-
资源限制:
- 在云服务器上,建议根据实例规格调整 Docker 的资源限制。可以在
C:ProgramDataDockerconfigdaemon.json中配置内存和 CPU 限制,防止 Docker 耗尽服务器资源导致业务中断。 - 示例配置:
{ "max-concurrent-downloads": 10, "default-ulimits": { "nofile": { "Name": "nofile", "Hard": 65536, "Soft": 65536 } }, "storage-driver": "overlay2" }
- 在云服务器上,建议根据实例规格调整 Docker 的资源限制。可以在
-
Linux 容器 vs Windows 容器:
- 默认情况下,Docker 会运行 Linux 容器(需要 WSL 2 或 Hyper-V 虚拟机隔离)。
- 如果你必须运行 Windows 容器(例如运行旧的 .NET Framework 应用),请在 Docker Desktop 右下角图标菜单中切换为 "Switch to Windows containers",并确保安装了相应的 Windows 基础镜像。
总结建议:
- 如果是个人学习、开发或小型测试,直接安装 Docker Desktop 最快最稳。
- 如果是正式生产环境且追求轻量化,请使用 Docker Engine + WSL 2 方案,并配合
daemon.json优化资源配置。
轻量云Cloud