.NET 容器映像
.NET 为不同的方案提供各种容器映像。 本文介绍不同类型的映像及其使用方式。 有关官方映像的详细信息,请参阅 Docker Hub:Microsoft .NET 存储库。
标记方案
从 .NET 8 开始,容器映像在区分方式方面更加务实。 以下特征用于区分映像:
- 应用的目标框架名字对象 (TFM)。
- OS、版本和体系结构。
- 映像类型(例如
runtime
、aspnet
、sdk
)。 - 映像变体(例如
*-distroless
,*-chiseled
)。 - 映像功能(例如
*-aot
、*-extra
)。
根据大小优化的映像
以下映像注重于生成尽可能小的映像大小:
- Alpine
- 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
映像类型。 对于每个 OS,提供了三个映像变体(都在 runtime-deps
中提供)。 请考虑使用 *-chiseled
映像的以下示例:
8.0-jammy-chiseled
:核心 CLR 的映像,无 tzdata 或 ICU。8.0-jammy-chiseled-aot
:本机 AOT 的映像,无 tzdata、ICU 或 stdc++。8.0-jammy-chiseled-extra
:核心 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 映像是为以下产品发布的:
- Alpine
- Mariner
- Ubuntu
有关详细信息,请参阅本机 AOT 部署
Docker Hub 存储库
适用于 .NET 的所有官方 Microsoft 映像都发布到 microsoft-dotnet Docker Hub 组织。 考虑以下存储库。
.NET 稳定映像存储库:
映像存储库 | 映像 |
---|---|
sdk | mcr.microsoft.com/dotnet/sdk |
aspnet | mcr.microsoft.com/dotnet/aspnet |
运行库 | 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 |
示例 | mcr.microsoft.com/dotnet/samples |
.NET nightly 映像存储库:
映像存储库 | 映像 |
---|---|
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 映像存储库:
映像存储库 | Image |
---|---|
framework | mcr.microsoft.com/dotnet/framework |
framework-aspnet | mcr.microsoft.com/dotnet/framework/aspnet |
framework-runtime | mcr.microsoft.com/dotnet/framework/runtime |
framework-samples | mcr.microsoft.com/dotnet/framework/samples |
framework-sdk | mcr.microsoft.com/dotnet/framework/sdk |
framework-wcf | mcr.microsoft.com/dotnet/framework/wcf |