.NET 容器映像

.NET 針對不同的案例提供各種容器映像。 本文說明不同類型的映像及其使用方式。 如需官方映像的詳細資訊,請參閱 Docker Hub:Microsoft .NET 存放庫。

標籤配置

從 .NET 8 開始,容器映像在區分方式方面更為實用。 下列特性可用來區分映像:

  • 應用程式的目標 Framework Moniker (TFM)。
  • 作業系統、版本和結構。
  • 映像類型 (例如,runtimeaspnetsdk)。
  • 映像變體 (例如,*-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

這個全球化策略是由具有相同標記的 runtimeaspnetsdk 使用。

重要

將 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 映像是相同標記的 runtimeaspnet 映像的基礎映像。 根據預設,原生 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 穩定映像存放庫:

映像存放庫 映像
aspnet mcr.microsoft.com/dotnet/aspnet
監視 mcr.microsoft.com/dotnet/monitor
monitor-base mcr.microsoft.com/dotnet/monitor/base
runtime-deps mcr.microsoft.com/dotnet/runtime-deps
執行階段 mcr.microsoft.com/dotnet/runtime
範例 mcr.microsoft.com/dotnet/samples
SDK mcr.microsoft.com/dotnet/sdk

.NET 夜間映像存放庫:

映像存放庫 映像
夜間 mcr.microsoft.com/dotnet/nightly
nightly-aspnet mcr.microsoft.com/dotnet/nightly/aspnet
nightly-monitor-base mcr.microsoft.com/dotnet/nightly/monitor/base
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

.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

另請參閱