容器基础映像

适用范围:Windows Server 2022、Windows Server 2019、Windows Server 2016

Windows 提供了四个容器基础映像,用户可以基于它们进行构建。 每个基础映像都是 Windows 或 Windows Server 操作系统的一种不同类型,其磁盘占用量不同,并带有一组不同的 Windows API。

映像发现

所有 Windows 容器基础映像均可通过 Docker Hub 发现。 Windows 容器基础映像本身由 Microsoft 容器注册表 (MCR) mcr.microsoft.com 提供。 这就是针对 Windows 容器基础映像的拉取命令如下所示的原因:

docker pull mcr.microsoft.com/windows/servercore:ltsc2022

MCR 没有其自己的目录体验,它用于支持现有的目录,例如 Docker Hub。 由于 Azure 已覆盖全球并可与 Azure CDN 配合使用,因此 MCR 能够提供一致且快速的映像拉取体验。 网络内性能增强、与 MCR(Microsoft 容器映像来源)和 Azure 市场紧密集成,并且 Azure 中以部署包格式提供容器的服务的数量在不断增加,这一切使得在 Azure 中运行其工作负荷的 Azure 客户受益匪浅。

选择基础映像

如何选择用作构建基础的合适基础映像? 对大多数用户而言,Windows Server CoreNanoserver 将是最适合使用的映像。 下面简要介绍了每个基础映像:

  • Nano Server 是用于新应用程序开发的超轻型 Windows 产品/服务。
  • Server Core 中等大小,是“提升和迁移”Windows Server 应用的不错选项。
  • Windows 是最大的映像,并且对工作负载具有完整的 Windows API 支持。
  • Windows Server 比 Windows 映像略小,具有完整的 Windows API 支持,并允许你使用更多服务器功能。

指南

虽然你可以自由决定使用哪个映像,但也可以根据下面提供的一些指导原则来进行选择:

  • 你的应用程序是否需要完整的 .NET Framework? 如果此问题的答案为“是”,则应选择 Windows Server Core
  • 你是否基于 .NET Core 构建 Windows 应用? 如果此问题的答案为“是”,则应选择 Nanoserver
  • Windows Server Core 容器映像是否缺少你的应用所需的依赖项? 如果此问题的答案为“是”,则应尝试选择 Windows。 此映像远远大于其他基础映像,但它携带了许多核心 Windows 库(例如 GDI 库)。
  • 你是 Windows 预览体验成员吗? 如果是,则应考虑使用映像的预览体验版。 有关详细信息,请参阅下面的“适用于 Windows 预览体验版的基础映像”。
  • 容器工作负载是否需要 GPU 加速支持? 如果需要,则应考虑使用 Windows Server 映像,以便为 Windows 容器工作负载提供硬件加速。

提示

许多 Windows 用户希望将依赖于 .NET 的应用程序容器化。 除了此处所述的四个基础映像,Microsoft 还发布了多个 Windows 容器映像(例如 .NET Framework 映像和 ASP .NET 映像),这些映像预配置了常用的 Microsoft 框架。

Windows 与 Windows Server

Windows Server 映像 (3.1 GB) 的大小略小于 Windows 映像 (3.4 GB)。 Windows Server 映像还继承了 Server Core 映像的所有性能和可靠性改进,支持 GPU,并且没有 IIS 连接限制。 要使用最新的 Windows Server 映像,需要安装 Windows Server 2022。 Windows Server 2022 不支持 Windows 映像。

适用于 Windows 预览体验成员的基础映像

Microsoft 提供了每个容器基础映像的“预览体验”版本。 这些预览体验版容器映像中包含了我们在容器映像方面最新最棒的功能开发。 当运行的主机使用 Windows 预览体验版(无论是 Windows 预览体验版还是 Windows Server 预览体验版)时,最好使用这些映像。 Docker Hub 中提供了以下预览体验版映像:

若要了解详细信息,请阅读将容器与 Windows 预览体验计划配合使用

Windows Server Core 与 Nanoserver

Windows Server CoreNanoserver 是要使用的最常见基础映像。 这两种映像之间的主要区别是,Nanoserver 中的 API 图面要小得多。 Nanoserver 映像中缺少 PowerShell、WMI 和 Windows 服务堆栈。

Nanoserver 用于提供恰好足够的 API 图面来运行依赖于 .NET Core 或其他新式开源框架的应用。 API 图面较小的好处是,Nanoserver 映像的磁盘占用量远远小于其余的 Windows 基础映像。 请记住,你始终可以在自己认为合适的条件下在 Nano Server 上添加层。 有关此情况的示例,请查看 .NET Core Nano Server Dockerfile