Udostępnij za pośrednictwem


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, , aspnetsdk).
  • 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 runtimeobrazy , aspneti 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, *-distrolessi 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

Zobacz też