在 Windows Server 上运行 Docker 时,默认情况下是部署 Linux 容器(Linux Containers),而不是“安装一个 Linux 操作系统”。
Docker 的核心机制是利用宿主机的内核来运行容器。由于 Windows Server 的内核是 Windows NT 内核,它无法直接运行需要 Linux 内核的 Linux 容器。因此,Windows Server 上的 Docker 实际上是通过一个轻量级的 Hyper-V 虚拟机(称为 MobyLinuxVM)来提供 Linux 内核环境,从而让你能够运行 Linux 镜像。
以下是完整的操作逻辑和步骤:
核心概念澄清
- 不是安装 Linux OS:你不需要像安装 VMware 那样安装一个完整的 Ubuntu 或 CentOS 系统。
- 而是运行 Linux 容器:你在 Windows Server 上启动 Docker 引擎后,可以直接拉取并运行
ubuntu,centos,alpine等 Linux 镜像。这些容器共享底层那个临时的 Linux 虚拟机内核。
第一步:启用必要的功能
Windows Server 需要开启 Hyper-V 支持才能运行 Docker Desktop 或 Docker Engine。
- 打开 服务器管理器 (Server Manager)。
- 点击 管理 (Manage) -> 添加角色和功能 (Add Roles and Features)。
- 一路点击“下一步”,直到进入 功能 (Features) 页面。
- 勾选 Hyper-V。
- 注意:如果提示需要重启,请先不要重启,继续完成后续配置,或者根据提示重启一次。
- 同时确保安装了 Windows Subsystem for Linux (WSL 2) 的支持(虽然 Docker Desktop 通常会自动处理,但在纯 Server 版上手动确认更稳妥)。
- 以管理员身份运行 PowerShell:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform Enable-WindowsOptionalFeature -Online -FeatureName WSL - 执行完后建议重启服务器。
- 以管理员身份运行 PowerShell:
第二步:选择并安装 Docker
在 Windows Server 上主要有两种安装方式:
方案 A:使用 Docker Desktop(推荐用于开发/测试)
这是最简单的方式,界面友好,自动配置网络。
- 下载 Docker Desktop for Windows 安装包(需确认版本是否支持 Windows Server,通常企业版支持较好)。
- 运行安装程序。
- 在安装向导中,务必选择 "Use the Windows host" 模式(即基于 Hyper-V 的 Linux 容器模式),不要选择 WSL 2 后端(除非你的 Server 版本较新且已正确配置 WSL 2 内核)。
- 安装完成后,Docker Desktop 会自动启动并在后台创建一个名为
moby-linux的虚拟机。
方案 B:使用 Docker Engine(推荐用于生产环境)
如果你不想安装图形界面,可以使用命令行安装的 Docker Engine。
- 下载并运行 Docker Engine 的安装脚本(针对 Windows Server 的版本)。
- 或者通过 PowerShell 手动配置 Docker 服务。
- 启动 Docker 服务:
Start-Service docker
第三步:验证并运行 Linux 容器
安装完成后,打开 PowerShell 或 CMD,输入以下命令:
# 检查版本
docker --version
# 拉取一个标准的 Linux 镜像 (例如 Ubuntu)
docker pull ubuntu:latest
# 运行该 Linux 容器
docker run -it --name my-linux-container ubuntu:latest /bin/bash
此时,你会看到命令行提示符从 C:> 变成了类似 root@...:/#,这表明你已经成功进入了 Linux 环境 并可以执行 Linux 命令(如 ls, apt-get update 等)。
常见问题与注意事项
-
性能开销:
由于每个 Linux 容器都运行在一个共享的 Hyper-V 虚拟机内核之上,相比原生 Linux 宿主机,会有少量的性能损耗(主要是磁盘 I/O 和网络略有延迟)。对于大多数应用来说这完全可以接受,但对于极高吞吐量的场景需谨慎评估。 -
Windows 容器 vs Linux 容器:
Docker 默认会根据镜像类型自动切换。- 如果你运行
docker run mcr.microsoft.com/windows/servercore,它会尝试运行 Windows 容器(直接在 Windows 内核上跑)。 - 如果你运行
docker run ubuntu,它会切换到 Linux 容器模式(在 Hyper-V VM 中跑)。 - 重要:你不能在同一台机器上同时混用这两种模式的容器(即不能在一个会话里既跑 Windows 容器又跑 Linux 容器,除非你频繁切换上下文,但这通常由 Docker 守护进程自动管理隔离)。
- 如果你运行
-
资源限制:
确保 Windows Server 分配了足够的内存给 Hyper-V 虚拟机。如果内存不足,Linux 容器可能会启动失败或被杀掉。可以在 Docker Desktop 设置中调整内存限制,或者在注册表中调整 Hyper-V 的内存预留。
总结
在 Windows Server 上“部署 Linux"的本质是:启用 Hyper-V 功能 -> 安装 Docker -> 拉取 Linux 镜像 -> 启动容器。你无需手动安装 ISO 镜像,Docker 会自动为你提供一个轻量级的 Linux 运行环境。
云计算