.NET 容器映像
.NET 为不同的方案提供了各种容器映像。 本文介绍不同类型的图像及其使用方式。 有关官方映像的详细信息,请参阅 Docker 中心:Microsoft .NET 存储库。
标记方案
从 .NET 8 开始,容器映像在区分方式方面更加务实。 以下特征用于区分图像:
- 应用的目标框架名字对象 (TFM)。
- OS、版本和体系结构。
- 图像类型(例如,
runtime
、aspnet
、sdk
)。 - 图像变体(例如,
*-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
此全球化策略由 runtime
、aspnet
和具有相同标记的 sdk
图像使用。
重要
将 tzdata 添加到 Debian bookworm 映像没有实际效果,除非对 tzdata 进行某种更新(尚未包含在 Debian 中),更新后,.NET 映像将包含较新的 tzdata。
某些包仍然是可选的,例如 Kerberos、LDAP 和 msquic。 这些包仅在特定场景中是必需的。
基于情境的图像
runtime-deps 映像具有很高的价值,特别是因为它们包含标准用户和端口定义。 可以在自包含和本机 AOT 方案中方便地使用它们。 但是,仅提供 runtime 和 sdk 映像所需的 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
映像是相同标记的 runtime
和 aspnet
映像的基础。 默认情况下,本机 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 |