.NET-Containerimages
.NET stellt verschiedene Containerimages für verschiedene Szenarien bereit. In diesem Artikel werden die verschiedenen Arten von Bildern und deren Verwendung beschrieben. Weitere Informationen zu offiziellen Images finden Sie im Docker Hub: Microsoft .NET-Repository.
Taggingschema
Ab .NET 8 sind Containerimages pragmatischer, wenn sie differenziert werden. Die folgenden Merkmale werden verwendet, um Bilder zu unterscheiden:
- Der Zielframeworkmoniker (TFM) der Anwendung.
- Das Betriebssystem, die Version und die Architektur.
- Der Bildtyp (z. B.
runtime
,aspnet
,sdk
). - Die Bildvariante (z. B.
*-distroless
,*-chiseled
). - Das Bildfeature (z. B.
*-aot
,*-extra
).
Für die Größe optimierte Bilder
Die folgenden Bilder konzentrieren sich auf das Ergebnis der kleinsten möglichen Bildgröße:
- Alpine
- Mariner distanzlos
- Ubuntu gezeißelt
Diese Bilder sind kleiner, da sie keine Globalisierungsabhängigkeiten wie ICU oder tzdata enthalten. Diese Bilder funktionieren nur mit Anwendungen, die für den invarianten Modus der Globalisierung konfiguriert sind. Um eine Anwendung für die invariante Globalisierung zu konfigurieren, fügen Sie der Projektdatei die folgende Eigenschaft hinzu:
<PropertyGroup>
<InvariantGlobalization>true</InvariantGlobalization>
</PropertyGroup>
Tipp
SDK-Images werden nicht für *-distroless
oder *-chiseled
-Bildtypen erstellt. Zusammengesetzte Bilder sind das kleinste aspnet
-Angebot für Core CLR.
Bilder, die für die Globalisierung geeignet sind
Containerisierte Anwendungen, die Globalisierung erfordern, vergrößern die Bildgröße, da sie Globalisierungsabhängigkeiten erfordern. Ubuntu- und Debian-Bilder haben ICU und tzdata bereits installiert.
Die Abhängigkeit von tzdata wurde den folgenden Bildern hinzugefügt:
runtime-deps:8.0-jammy
runtime-deps:8.0-bookworm-slim
Diese Globalisierungstaktik wird von runtime
, aspnet
und sdk
-Bildern mit demselben Tag verwendet.
Wichtig
Das Hinzufügen von tzdata zu Debian-Bookworm-Images hat keine praktische Wirkung, es sei denn, es gibt ein Update zu tzdata (das noch nicht in Debian enthalten ist), an dem .NET-Bilder einen neueren tzdata enthalten würden.
Einige Pakete sind weiterhin optional, z. B. Kerberos, LDAP und msquic. Diese Pakete sind nur in Nischenszenarien erforderlich.
Szenariobasierte Bilder
Die Runtime-Deps-Images weisen einen erheblichen Wert auf, insbesondere da sie eine Standardbenutzer- und Portdefinition enthalten. Sie sind praktisch für eigenständige und systemeigene AOT-Szenarien zu verwenden. Die ausschließliche Bereitstellung von runtime-deps
-Bildern, die von Laufzeit- und sdk-Bildern benötigt werden, reicht jedoch nicht aus, um alle denkbaren Szenarien zu ermöglichen oder optimale Bilder zu generieren.
Die Notwendigkeit runtime-deps
erstreckt sich auch auf native AOT*-distroless
- und *-chiseled
-Bildtypen. Für jedes Betriebssystem werden drei Bildvarianten bereitgestellt (alle in runtime-deps
). Betrachten Sie das folgende Beispiel mit *-chiseled
-Bildern:
8.0-jammy-chiseled
: Bilder für Core CLR, keine tzdata oder ICU.8.0-jammy-chiseled-aot
: Bilder für systemeigene AOT, keine tzdata, ICU oder stdc++.8.0-jammy-chiseled-extra
: Bild für Core CLR und native AOT, umfasst tzdata, ICU und stdc++.
Was die Szenarien betrifft:
Die 8.0-jammy-chiseled
-Bilder sind die Basis für runtime
und aspnet
-Bilder desselben Tags. Standardmäßig können systemeigene AOT-Anwendungen das 8.0-jammy-chiseled-aot
-Bild verwenden, da es für die Größe optimiert ist. Native AOT-Anwendungen und eigenständige/einzelne Dateianwendungen mit Core CLR, die Globalisierungsfunktionen erfordern, können 8.0-jammy-chiseled-extra
verwenden.
Alpine- und Mariner-Bilder verwenden das gleiche Schema.
Hinweis
Debian- und Ubuntu (ohne Chiseled) runtime-deps
-Bilder weisen keine mehrere Varianten auf.
Native AOT-Containerimages
Native AOT-Bilder werden im Sdk-Repository veröffentlicht und mit dem -aot
-Suffix markiert. Diese Bilder ermöglichen das Erstellen nativer AOT-Anwendungen. Sie werden für Distros mit übereinstimmenden runtime-deps:*-aot
-Bildern erstellt. Diese Bilder sind groß, häufig doppelt so groß wie normale SDK-Bilder.
AOT-Bilder werden veröffentlicht für:
- Alpine
- Mariner
- Ubuntu
Weitere Informationen finden Sie unter Bereitstellung von nativem AOT
Docker-Hubrepositorys
Alle offiziellen Microsoft-Images für .NET werden in der Microsoft-dotnet Docker Hub-Organisation veröffentlicht. Betrachten Sie die folgenden Repositorys.
.NET Stable Image Repositorys:
Image-Repository | Abbildung |
---|---|
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 |
Beispiele | mcr.microsoft.com/dotnet/samples |
.NET Nightly Image Repositorys:
Image-Repository | Abbildung |
---|---|
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-Imagerepositorys:
Image-Repository | Abbildung |
---|---|
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 |