在 Windows Server 上安装 Docker 并部署 Linux 容器,通常指的是使用 Docker Desktop for Windows(包含 Hyper-V 或 WSL2 后端)或者在 Windows Server Core/Server 2019+ 上直接运行 Linux Containers。
由于 Windows Server 默认不支持原生 Linux 内核,你实际上是在运行一个轻量级的 Linux 虚拟机(WSL2)或者通过 Hyper-V 隔离的 Linux 环境。以下是两种主流方案的详细步骤:
方案一:使用 WSL2 + Docker Desktop(推荐,最稳定且易于管理)
这是目前微软官方推荐的方式,利用 Windows Subsystem for Linux 2 (WSL2) 作为后端,性能最好,兼容性问题最少。
前置条件
- 操作系统:Windows Server 2019 (Build 1809+) 或 Windows Server 2022。
- 已启用 Hyper-V 和 WSL2 功能。
- 管理员权限。
步骤 1:启用 WSL2 和虚拟化组件
以管理员身份打开 PowerShell,执行以下命令:
# 启用必要的功能
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
# 重启服务器(必须重启才能生效)
Restart-Computer
步骤 2:安装并设置 WSL2 内核
重启后,再次以管理员身份运行 PowerShell,下载并安装 WSL2 内核更新包,然后设置为默认版本:
# 下载并安装 WSL2 更新
wsl --update
# 将默认版本设置为 WSL2
wsl --set-default-version 2
步骤 3:安装 Docker Desktop for Windows
- 访问 Docker Hub 下载
Docker Desktop的 Windows 安装包(注意选择.exe版本)。
注意:Windows Server 可能无法直接从官网下载最新版 Docker Desktop,如果官网限制,请尝试从 GitHub Releases 页面下载对应版本的离线安装包。 - 运行安装程序,按照向导安装。
- 安装过程中确保勾选 "Use WSL 2 instead of Hyper-V"(使用 WSL2 而不是 Hyper-V)。
- 安装完成后重启计算机。
步骤 4:验证并拉取 Linux 镜像
安装完成后,打开 PowerShell 或 CMD,输入:
docker run hello-world
如果显示成功,说明 Docker 已就绪。接着你可以拉取一个标准的 Linux 镜像(例如 Ubuntu):
docker pull ubuntu:latest
docker run -it ubuntu:latest bash
此时你将进入一个 Linux 容器的 Shell 环境,即完成了"Linux 部署”。
方案二:直接使用 Windows Server 上的 Docker Engine(仅适用于特定场景)
如果你需要在生产环境中避免安装 Docker Desktop(因为它较重),可以直接在 Windows Server 上安装 Docker Engine for Windows。但请注意,这主要支持 Windows 容器。若要运行 Linux 容器,依然依赖 Hyper-V 或 WSL2 后端。
对于 Windows Server 2019/2022,通常建议采用 Hyper-V 模式 来运行 Linux 容器。
步骤 1:启用 Hyper-V
Install-WindowsFeature -Name Hyper-V -IncludeManagementTools -Restart
步骤 2:安装 Docker Engine
由于 Windows Server 没有图形化商店,你需要手动下载 MSI 安装包。
- 访问 Docker 官方发布页或 GitHub Release 页面,寻找
Docker-CE的 Windows 版本(注意区分 Community Edition)。 - 下载
.msi安装包。 - 双击安装,选择 "Run as a Windows Service" 等选项。
步骤 3:配置 Docker 以支持 Linux 容器
安装完成后,Docker 默认可能只允许 Windows 容器。你需要修改配置文件 C:ProgramDatadockerconfigdaemon.json(如果没有则新建),添加以下内容以启用 Linux 容器支持(通常 Docker Desktop 会自动处理,但手动安装可能需要指定后端):
{
"experimental": true,
"features": {
"containerd": true
}
}
注:在较新的 Docker 版本中,只要安装了 WSL2 后端,它会自动检测并支持 Linux 容器。如果未安装 WSL2,Docker 可能会提示需要切换到 WSL2 模式。
常见问题与注意事项
-
授权许可问题:
- Docker Desktop 在商业环境(公司超过 250 人或年收入超过 1 亿美元)下需要付费订阅。如果是个人学习或小规模内部测试,免费版可用。
- Docker Engine (手动安装版) 在技术上更灵活,但在某些版本策略上也可能有企业限制,请务必查阅最新的服务条款。
-
网络问题:
- 在 Windows Server 上,Docker 容器默认使用 NAT 网络。如果需要宿主机访问容器,通常需要使用
-p参数映射端口,或者配置桥接网络。 - 如果使用 WSL2,宿主机的 IP 地址可能与容器内的 IP 不同,需注意防火墙规则。
- 在 Windows Server 上,Docker 容器默认使用 NAT 网络。如果需要宿主机访问容器,通常需要使用
-
性能优化:
- 务必确保 BIOS 中开启了 VT-x/AMD-V 虚拟化技术。
- 如果是大规模部署,建议使用 Kubernetes (k3s/kubeadm) 配合 WSL2 或 Azure Arc 进行集群管理,而不是单机 Docker。
总结建议
- 如果你是为了开发、测试或小型部署:请直接使用 方案一 (Docker Desktop + WSL2)。这是微软官方主推的路径,配置最简单,对 Linux 发行版的兼容性最好。
- 如果你是为了生产环境且资源受限:请考虑在 Windows Server 上部署 Hyper-V 虚拟机 专门跑 Linux,然后在虚拟机内安装 Docker,这样比在宿主机上混用容器更稳定、更安全。
轻量云Cloud