.NET 容器映像
.NET 針對不同的案例提供各種容器映像。 本文說明不同類型的映像及其使用方式。 如需官方映像的詳細資訊,請參閱 Docker Hub:Microsoft .NET 存放庫。
標籤配置
從 .NET 8 開始,容器映像在區分方式方面更為實用。 下列特性可用來區分映像:
- 應用程式的目標 Framework Moniker (TFM)。
- 作業系統、版本和結構。
- 映像類型 (例如,
runtime
、aspnet
、sdk
)。 - 映像變體 (例如,
*-distroless
、*-chiseled
)。 - 映像功能 (例如,
*-aot
、*-extra
)。
針對大小最佳化的映像
下列映像著重於產生最小的可能映像大小:
- Alpine
- Mariner distroless
- Ubuntu chiseled
這些映像較小,因為它們不包含全球化相依性,例如 ICU 或 tzdata。 這些映像僅適用於針對全球化非變異模式設定的應用程式。 若要設定非變異全球化的應用程式,請將下列屬性新增至專案檔:
<PropertyGroup>
<InvariantGlobalization>true</InvariantGlobalization>
</PropertyGroup>
提示
SDK 映像不會針對 *-distroless
或 *-chiseled
映像類型產生。 複合映像是 Core 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 案例。 不過,只提供執行階段和 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 應用程式和 Core 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 |
監視 | mcr.microsoft.com/dotnet/monitor |
aspire-dashboard | mcr.microsoft.com/dotnet/aspire-dashboard |
範例 | 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 |
framework-samples | mcr.microsoft.com/dotnet/framework/samples |
framework-sdk | mcr.microsoft.com/dotnet/framework/sdk |
framework-wcf | mcr.microsoft.com/dotnet/framework/wcf |