在 Windows Server 上部署 Docker 并运行 Linux 容器,实际上是通过 Docker Desktop(或 Docker Engine for Windows)实现的。Windows Server 本身不支持直接运行 Linux 内核,因此 Docker 会在 Windows 内部启动一个轻量级的虚拟机(基于 Hyper-V 或 WSL2),在这个虚拟机中运行真正的 Linux 环境。
以下是针对 Windows Server 环境的详细实施步骤和关键注意事项:
1. 前置条件检查
在开始之前,请确保您的 Windows Server 满足以下要求:
- 操作系统版本:支持 Windows Server 2019、2022 或更高版本。
- 虚拟化支持:BIOS/UEFI 中必须开启虚拟化技术(Intel VT-x / AMD-V)。
- Hyper-V 功能:需要启用 Hyper-V 角色。
- WSL2 支持(推荐):如果选择 WSL2 后端,需要安装 WSL2 内核更新。
2. 启用必要的系统功能
打开 PowerShell(以管理员身份运行),依次执行以下命令来启用 Hyper-V 和 Containers 功能:
# 启用 Hyper-V 和容器功能
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
Enable-WindowsOptionalFeature -Online -FeatureName Containers -All
# 如果需要 WSL2 后端(推荐用于性能和兼容性)
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
执行后可能需要重启服务器。
3. 安装 Docker
在 Windows Server 上,通常有两种安装方式,推荐使用 Docker Desktop for Windows,因为它集成了图形化管理界面且配置简单。
方案 A:使用 Docker Desktop (推荐)
-
访问 Docker 官网下载页面,下载适用于 Windows Server 的 Docker Desktop 安装包(注意:部分旧版 Docker Desktop 可能不再支持 Server 核心模式,建议下载最新稳定版,或者确认其支持 Server Core)。
- 注意:Docker Desktop 通常需要完整的桌面体验(GUI)。如果您的服务器是“无头模式”(Server Core,没有图形界面),则无法直接安装 Docker Desktop GUI 版本。
-
如果服务器有图形界面(Desktop Experience):
- 运行安装程序,按照向导完成安装。
- 安装完成后,启动 Docker Desktop,它会自动配置后端引擎。
-
如果服务器是 Server Core(无图形界面):
- 您不能安装 Docker Desktop GUI。
- 您需要使用 Docker Engine for Windows(命令行版本)。可以通过 Chocolatey 包管理器安装:
choco install docker-cli # 或者从 GitHub 下载二进制文件并手动配置 - 然后配置
docker指向本地守护进程,或者直接通过脚本管理。
方案 B:仅安装 Docker Engine (适合自动化/无 GUI 场景)
如果您不需要图形界面,只想在后台运行服务:
- 下载 Docker Engine for Windows 的安装脚本或 MSI 包。
- 执行安装脚本初始化引擎。
- 验证安装:
docker version
4. 切换到 Linux 容器模式
安装完成后,Docker 默认可能处于 Windows 容器模式。要运行 Linux 镜像(如 Ubuntu, CentOS, Alpine):
-
打开 Docker 设置(如果是 Docker Desktop):
- 点击右下角托盘图标 -> Settings。
- 进入 General 或 Docker Engine 选项卡。
- 找到 Switch to Linux containers 按钮并点击切换。
- 系统会提示重启 Docker 服务,确认后等待重启完成。
-
如果是命令行模式(Engine only):
- 通常需要在启动参数中指定,或者在
daemon.json中配置,但现代 Docker Engine 通常会自动根据拉取的镜像类型决定后端。
- 通常需要在启动参数中指定,或者在
5. 验证与测试
现在您可以尝试拉取并运行一个标准的 Linux 容器了:
# 拉取一个基础的 Linux 镜像
docker pull alpine
# 运行该容器,并在其中执行命令
docker run --rm alpine echo "Hello from Linux container on Windows Server!"
如果看到输出结果,说明 Linux 环境已成功部署。
关键注意事项
- 性能差异:由于存在虚拟化层(Hyper-V 或 WSL2),I/O 性能会比原生 Linux 略低,但在大多数应用场景下是可接受的。WSL2 后端通常比传统 Hyper-V 虚拟机性能更好。
- 资源占用:Docker 会占用一定的 CPU 和内存资源,请根据业务需求合理限制容器资源(使用
--memory,--cpus等参数)。 - 网络模式:Linux 容器在 Windows 上运行时,网络模式通常是 NAT,外部访问需要通过端口映射(
-p host_port:container_port)。 - 持久化存储:建议使用卷挂载(Volumes)将数据保存到 Windows 宿主机上,避免容器删除后数据丢失。
通过以上步骤,您就可以在 Windows Server 上成功构建一个能够运行 Linux 应用的 Docker 环境。
CLOUD技术博