.NET 容器映像

.NET 为不同的方案提供了各种容器映像。 本文介绍不同类型的图像及其使用方式。 有关官方映像的详细信息,请参阅 Docker 中心:Microsoft .NET 存储库。

标记方案

从 .NET 8 开始,容器映像在区分方式方面更加务实。 以下特征用于区分图像:

  • 应用的目标框架名字对象 (TFM)。
  • OS、版本和体系结构。
  • 图像类型(例如,runtimeaspnetsdk)。
  • 图像变体(例如,*-distroless*-chiseled)。
  • 图像功能(例如,*-aot*-extra)。

根据大小优化的映像

以下映像注重于生成尽可能小的映像大小:

  • 高山
  • Mariner distroless
  • Ubuntu chiseled

这些映像较小,因为它们不包括 ICU 或 tzdata 等全球化依赖项。 这些图像仅适用于为全球化不变模式配置的应用程序。 若要为固定全球化配置应用,请将以下属性添加到项目文件:

<PropertyGroup>
  <InvariantGlobalization>true</InvariantGlobalization>
</PropertyGroup>

提示

SDK 映像不是针对 *-distroless*-chiseled 映像类型生成的。 复合映像是 核心 CLR 的最小 aspnet 产品。

适用于全球化的图像

需要全球化的容器化应用会膨胀映像大小,因为它们需要全球化依赖项。 Ubuntu 和 Debian 映像已安装 ICU 和 tzdata。

tzdata 依赖项已添加到以下映像:

  • runtime-deps:8.0-jammy
  • runtime-deps:8.0-bookworm-slim

此全球化策略由 runtimeaspnet和具有相同标记的 sdk 图像使用。

重要

将 tzdata 添加到 Debian bookworm 映像没有实际效果,除非对 tzdata 进行某种更新(尚未包含在 Debian 中),更新后,.NET 映像将包含较新的 tzdata。

某些包仍然是可选的,例如 Kerberos、LDAP 和 msquic。 这些包仅在特定场景中是必需的。

基于情境的图像

runtime-deps 映像具有很高的价值,特别是因为它们包含标准用户和端口定义。 可以在自包含和本机 AOT 方案中方便地使用它们。 但是,仅提供 runtimesdk 映像所需的 runtime-deps 映像并不足以启用所有可想象到的方案或生成最佳映像。

runtime-deps 还需要扩展到本机 AOT、*-distroless*-chiseled 映像类型。 对于每个操作系统,提供了三个图像变体(全部为 runtime-deps)。 请考虑以下使用 *-chiseled 图像的示例:

  • 8.0-jammy-chiseled:Core CLR 的映像,无 tzdata 或 ICU。
  • 8.0-jammy-chiseled-aot:用于本机 AOT 的图像,不包含 tzdata、ICU 或 stdc++。
  • 8.0-jammy-chiseled-extra:Core CLR 和本机 AOT 的映像,包括 tzdata、ICU 和 stdc++。

在场景方面:

8.0-jammy-chiseled 映像是相同标记的 runtimeaspnet 映像的基础。 默认情况下,本机 AOT 应用可以使用 8.0-jammy-chiseled-aot 映像,因为它已根据大小进行优化。 需要全球化功能的本机 AOT 应用和核心 CLR 自包含/单文件应用可以使用 8.0-jammy-chiseled-extra

Alpine 和 Mariner 图像使用相同的方案。

备注

Debian 和 Ubuntu(非 chiseled)runtime-deps 映像没有多个变体。

本机 AOT 容器映像

本机 AOT 映像将发布到 sdk 存储库,标记有后缀 -aot。 这些映像支持生成本机 AOT 应用。 它们是为具有匹配 runtime-deps:*-aot 映像的发行版创建的。 这些映像很大,通常为常规 SDK 映像大小的两倍。

AOT 映像是为以下产品发布的:

  • 高山
  • 水手
  • Ubuntu

有关详细信息,请参阅本机 AOT 部署

Docker 中心存储库

适用于 .NET 的所有官方 Microsoft 映像都发布到 microsoft-dotnet Docker Hub 社区。 请考虑以下存储库。

.NET 稳定映像存储库:

映像存储库 映像
sdk mcr.microsoft.com/dotnet/sdk
aspnet mcr.microsoft.com/dotnet/aspnet
runtime mcr.microsoft.com/dotnet/runtime
runtime-deps mcr.microsoft.com/dotnet/runtime-deps
monitor mcr.microsoft.com/dotnet/monitor
aspire-dashboard mcr.microsoft.com/dotnet/aspire-dashboard
samples mcr.microsoft.com/dotnet/samples

.NET 夜间映像存储库:

映像存储库 映像
nightly-aspnet mcr.microsoft.com/dotnet/nightly/aspnet
nightly-monitor mcr.microsoft.com/dotnet/nightly/monitor
nightly-runtime-deps mcr.microsoft.com/dotnet/nightly/runtime-deps
nightly-runtime mcr.microsoft.com/dotnet/nightly/runtime
nightly-sdk mcr.microsoft.com/dotnet/nightly/sdk
nightly-aspire-dashboard mcr.microsoft.com/dotnet/nightly/aspire-dashboard

.NET Framework 映像存储库:

映像存储库 映像
framework mcr.microsoft.com/dotnet/framework
framework-aspnet mcr.microsoft.com/dotnet/framework/aspnet
framework-runtime mcr.microsoft.com/dotnet/framework/runtime
框架示例 mcr.microsoft.com/dotnet/framework/samples
framework-sdk mcr.microsoft.com/dotnet/framework/sdk
framework-wcf mcr.microsoft.com/dotnet/framework/wcf

另请参阅