Windows Server 核心
支持传统的 .NET Framework 应用程序。
适用范围:Windows Server 2022、Windows Server 2019、Windows Server 2016
Windows 提供了四个容器基础映像,用户可以基于它们进行构建。 每个基础映像都是 Windows 或 Windows Server 操作系统的一种不同类型,其磁盘占用量不同,并带有一组不同的 Windows API。
支持传统的 .NET Framework 应用程序。
针对 .NET Core 应用程序构建。
提供完整的 Windows API 集。
提供完整的 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 Core
和 Nanoserver
将是最适合使用的映像。 下面简要介绍了每个基础映像:
Nano Server
是用于新应用程序开发的超轻型 Windows 产品/服务。Server Core
中等大小,是“提升和迁移”Windows Server 应用的不错选项。Windows
是最大的映像,并且对工作负载具有完整的 Windows API 支持。Windows Server
比 Windows 映像略小,具有完整的 Windows API 支持,并允许你使用更多服务器功能。虽然你可以自由决定使用哪个映像,但也可以根据下面提供的一些指导原则来进行选择:
Windows Server Core
。Nanoserver
。Windows
。 此映像远远大于其他基础映像,但它携带了许多核心 Windows 库(例如 GDI 库)。Windows Server
映像,以便为 Windows 容器工作负载提供硬件加速。提示
许多 Windows 用户希望将依赖于 .NET 的应用程序容器化。 除了此处所述的四个基础映像,Microsoft 还发布了多个 Windows 容器映像(例如 .NET Framework 映像和 ASP .NET 映像),这些映像预配置了常用的 Microsoft 框架。
Windows Server
映像 (3.1 GB) 的大小略小于 Windows
映像 (3.4 GB)。 Windows Server 映像还继承了 Server Core 映像的所有性能和可靠性改进,支持 GPU,并且没有 IIS 连接限制。 要使用最新的 Windows Server 映像,需要安装 Windows Server 2022。 Windows Server 2022 不支持 Windows 映像。
Microsoft 提供了每个容器基础映像的“预览体验”版本。 这些预览体验版容器映像中包含了我们在容器映像方面最新最棒的功能开发。 当运行的主机使用 Windows 预览体验版(无论是 Windows 预览体验版还是 Windows Server 预览体验版)时,最好使用这些映像。 Docker Hub 中提供了以下预览体验版映像:
若要了解详细信息,请阅读将容器与 Windows 预览体验计划配合使用。
Windows Server Core
和 Nanoserver
是要使用的最常见基础映像。 这两种映像之间的主要区别是,Nanoserver 中的 API 图面要小得多。 Nanoserver 映像中缺少 PowerShell、WMI 和 Windows 服务堆栈。
Nanoserver 用于提供恰好足够的 API 图面来运行依赖于 .NET Core 或其他新式开源框架的应用。 API 图面较小的好处是,Nanoserver 映像的磁盘占用量远远小于其余的 Windows 基础映像。 请记住,你始终可以在自己认为合适的条件下在 Nano Server 上添加层。 有关此情况的示例,请查看 .NET Core Nano Server Dockerfile。