在 Windows Server 上安装 Docker 主要有两种主流方式:使用 Docker Desktop(适合开发测试,需开启 Hyper-V)或 Docker Engine(适合生产环境,基于 WSL2 或传统容器)。
由于 Windows Server 默认不包含完整的图形界面和 WSL2 支持,推荐优先使用 Docker Engine (Windows Containers),这种方式更轻量且符合服务器场景。以下是详细步骤:
前置条件检查
- 系统版本:确保是 Windows Server 2016、2019 或 2022。
- 功能启用:必须开启 Hyper-V 和 容器功能。
- 网络:确保服务器能访问互联网以下载镜像和工具。
方法一:使用 Docker Engine(推荐用于生产环境)
此方法直接安装 Docker 守护进程,不依赖图形界面,资源占用更低。
1. 启用必要功能
打开 PowerShell(管理员身份),执行以下命令:
# 启用 Hyper-V 和容器功能
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
Enable-WindowsOptionalFeature -Online -FeatureName containers -All
# 重启服务器(必须)
Restart-Computer
注:如果提示需要重启,请等待重启完成后再继续。
2. 下载并安装 Docker
前往官方 GitHub 发布页下载 MSI 安装包:
- 地址:https://github.com/microsoft/Windows-Containers/releases
- 选择最新版本(如
docker-24.x.x-x86_64.msi)。
手动安装步骤:
- 双击下载的
.msi文件。 - 按照向导点击“下一步”,接受许可协议。
- 在安装选项中选择 “为所有用户安装”。
- 关键步骤:勾选 “允许非特权容器”(如果不需要特权模式可跳过,但通常建议勾选以兼容更多镜像)。
- 完成安装后,再次重启服务器以确保服务生效。
3. 验证安装
重启后,打开 PowerShell 输入:
docker --version
docker run hello-world
如果看到 "Hello from Docker!" 字样,说明安装成功。
方法二:使用 Docker Desktop for Windows(适合开发调试)
如果你需要图形化管理界面(Dashboard)且服务器已安装 GUI 或可通过远程桌面操作,可以使用此方法。它底层依赖 WSL2。
1. 启用 WSL2 和虚拟机平台
在 PowerShell(管理员)中运行:
# 启用 WSL2 后端
wsl --install
# 或者单独启用功能
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux -All
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform -All
Restart-Computer
2. 下载并安装 Docker Desktop
- 访问官网下载:https://www.docker.com/products/docker-desktop/
- 下载
Docker Desktop.exe。 - 运行安装程序,按提示完成安装。
- 首次启动时,它会自动配置 WSL2 后端并下载相关组件。
注意:Docker Desktop 在 Windows Server 上的授权条款可能与个人版不同,生产环境建议使用方法一。
常见问题与优化建议
- 权限问题:如果
docker run报错 "permission denied",请尝试将当前用户加入docker-users组,或以管理员身份运行 PowerShell。 - 网络X_X:如果服务器在内网,可能需要配置 HTTP X_X。编辑
C:ProgramDatadockerconfigdaemon.json添加:{ "proxies": { "httpProxy": "http://proxy-ip:port", "httpsProxy": "http://proxy-ip:port" } }然后重启 Docker 服务:
Restart-Service docker。 - 镜像提速:国内用户建议配置镜像提速器(如阿里云、腾讯云提供的提速地址),同样修改
daemon.json文件中的registry-mirrors字段。
通过以上步骤,你就可以在 Windows Server 上成功运行 Docker 容器了。如果是纯生产环境且无 GUI,强烈建议采用方法一。
云计算