Obrazy kontenerów platformy .NET
Platforma .NET udostępnia różne obrazy kontenerów dla różnych scenariuszy. W tym artykule opisano różne typy obrazów i sposób ich użycia. Aby uzyskać więcej informacji na temat oficjalnych obrazów, zobacz repozytorium Docker Hub: Microsoft .NET .
Schemat tagowania
Począwszy od platformy .NET 8, obrazy kontenerów są bardziej pragmatyczne w sposobie ich rozróżniania. Do rozróżniania obrazów służą następujące cechy:
- Docelowy pseudonim platformy (TFM) aplikacji.
- System operacyjny, wersja i architektura.
- Typ obrazu (na przykład
runtime
, ,aspnet
sdk
). - Wariant obrazu (na przykład
*-distroless
,*-chiseled
). - Funkcja obrazu (na przykład
*-aot
,*-extra
).
Obrazy zoptymalizowane pod kątem rozmiaru
Poniższe obrazy koncentrują się na tym, że rozmiar obrazu jest najmniejszy:
- Alpine
- Bez dystrybucji mariner
- Ubuntu dłutowane
Te obrazy są mniejsze, ponieważ nie obejmują zależności globalizacji, takich jak ICU lub tzdata. Te obrazy działają tylko z aplikacjami skonfigurowanymi do niezmiennego trybu globalizacji. Aby skonfigurować aplikację pod kątem niezmiennej globalizacji, dodaj następującą właściwość do pliku projektu:
<PropertyGroup>
<InvariantGlobalization>true</InvariantGlobalization>
</PropertyGroup>
Napiwek
Obrazy zestawu SDK nie są tworzone dla *-distroless
typów obrazów ani *-chiseled
ich typów. Obrazy złożone to najmniejsza aspnet
oferta core CLR.
Obrazy odpowiednie do globalizacji
Konteneryzowane aplikacje, które wymagają globalizacji, zawyżają rozmiar obrazu, ponieważ wymagają zależności globalizacji. Obrazy z systemami Ubuntu i Debian mają już zainstalowane pliki ICU i tzdata.
Zależność tzdata została dodana do następujących obrazów:
runtime-deps:8.0-jammy
runtime-deps:8.0-bookworm-slim
Ta taktyka globalizacji jest używana przez runtime
obrazy , aspnet
i sdk
z tym samym tagiem.
Ważne
Dodanie danych tzdata do obrazów bookworm Debian nie ma praktycznego efektu, chyba że istnieje aktualizacja danych tzdata (która nie jest jeszcze zawarta w Debianie), w którym to momencie obrazy platformy .NET będą zawierać nowsze dane tzdata.
Niektóre pakiety są nadal opcjonalne, takie jak Kerberos, LDAP i msquic. Te pakiety są wymagane tylko w scenariuszach niszowych.
Obrazy oparte na scenariuszach
Obrazy środowiska uruchomieniowego deps mają znaczącą wartość, szczególnie dlatego, że zawierają definicje użytkownika standardowego i portu. Są one wygodne w przypadku scenariuszy samodzielnej i natywnej AOT. Jednak wyłącznie udostępnianie runtime-deps
obrazów potrzebnych przez środowisko uruchomieniowe i obrazy zestawu SDK nie jest wystarczające, aby włączyć wszystkie możliwe do wyobrażania sobie scenariusze lub wygenerować optymalne obrazy.
Potrzeba runtime-deps
rozszerzenia na natywne typy AOT, *-distroless
i obrazów *-chiseled
. Dla każdego systemu operacyjnego dostępne są trzy warianty obrazu (wszystkie w systemie runtime-deps
). Rozważmy następujący przykład przy użyciu *-chiseled
obrazów:
8.0-jammy-chiseled
: Obrazy dla core CLR, bez danych tzdata ani ICU.8.0-jammy-chiseled-aot
: Obrazy dla natywnej usługi AOT, bez danych tzdata, ICU lub stdc++.8.0-jammy-chiseled-extra
: Obraz zarówno dla podstawowego środowiska CLR, jak i natywnego systemu AOT, zawiera dane tzdata, ICU i stdc++.
Pod względem scenariuszy:
Obrazy 8.0-jammy-chiseled
są podstawą i runtime
aspnet
obrazy tego samego tagu. Domyślnie natywne aplikacje AOT mogą używać 8.0-jammy-chiseled-aot
obrazu, ponieważ są zoptymalizowane pod kątem rozmiaru. Natywne aplikacje AOT i aplikacje self-contained/single file Core CLR, które wymagają globalizacji, mogą używać funkcji 8.0-jammy-chiseled-extra
.
Obrazy Alpine i Mariner używają tego samego schematu.
Uwaga
Obrazy Debian i Ubuntu (niesłuchane) runtime-deps
nie mają wielu wariantów.
Natywne obrazy kontenerów usługi AOT
Natywne obrazy AOT są publikowane w repozytorium zestawu SDK i oznaczone sufiksem -aot
. Te obrazy umożliwiają tworzenie natywnych aplikacji AOT. Są one tworzone na potrzeby dystrybucji z pasującymi runtime-deps:*-aot
obrazami. Te obrazy są duże, często dwa razy większe niż zwykłe obrazy zestawu SDK.
Obrazy AOT są publikowane dla:
- Alpine
- Marynarz
- Ubuntu
Aby uzyskać więcej informacji, zobacz Native AOT deployment (Wdrażanie natywnej usługi AOT)
Repozytoria centrum platformy Docker
Wszystkie oficjalne obrazy firmy Microsoft dla platformy .NET są publikowane w organizacji microsoft-dotnet Docker Hub. Rozważ następujące repozytoria.
Stabilne repozytoria obrazów platformy .NET:
Repozytorium obrazów | Obraz |
---|---|
zestaw SDK | mcr.microsoft.com/dotnet/sdk |
aspnet | mcr.microsoft.com/dotnet/aspnet |
Środowiska wykonawczego | mcr.microsoft.com/dotnet/runtime |
runtime-deps | mcr.microsoft.com/dotnet/runtime-deps |
monitor | mcr.microsoft.com/dotnet/monitor |
pulpit nawigacyjny aspirujący | mcr.microsoft.com/dotnet/aspire-dashboard |
Próbki | mcr.microsoft.com/dotnet/samples |
Nocne repozytoria obrazów platformy .NET:
Repozytorium obrazów | Obraz |
---|---|
nightly-aspnet | mcr.microsoft.com/dotnet/nightly/aspnet |
monitor nocny | mcr.microsoft.com/dotnet/nightly/monitor |
nightly-runtime-deps | mcr.microsoft.com/dotnet/nightly/runtime-deps |
nocne środowisko uruchomieniowe | mcr.microsoft.com/dotnet/nightly/runtime |
nocny zestaw SDK | mcr.microsoft.com/dotnet/nightly/sdk |
nightly-aspire-dashboard | mcr.microsoft.com/dotnet/nightly/aspire-dashboard |
Repozytoria obrazów programu .NET Framework:
Repozytorium obrazów | Obraz |
---|---|
struktura | mcr.microsoft.com/dotnet/framework |
framework-aspnet | mcr.microsoft.com/dotnet/framework/aspnet |
framework-runtime | mcr.microsoft.com/dotnet/framework/runtime |
przykłady struktury | mcr.microsoft.com/dotnet/framework/samples |
framework-sdk | mcr.microsoft.com/dotnet/framework/sdk |
framework-wcf | mcr.microsoft.com/dotnet/framework/wcf |