.NET-containerinstallatiekopieën
.NET biedt verschillende containerinstallatiekopieën voor verschillende scenario's. In dit artikel worden de verschillende typen afbeeldingen beschreven en hoe ze worden gebruikt. Zie de Docker Hub: Microsoft .NET-opslagplaats voor meer informatie over officiële installatiekopieën.
Tagschema
Vanaf .NET 8 zijn containerinstallatiekopieën pragmatischer in hoe ze worden onderscheiden. De volgende kenmerken worden gebruikt om afbeeldingen te onderscheiden:
- Het doelframework moniker (TFM) van de app.
- Het besturingssysteem, de versie en de architectuur.
- Het afbeeldingstype (bijvoorbeeld
runtime
,aspnet
).sdk
- De afbeeldingsvariant (bijvoorbeeld
*-distroless
,*-chiseled
). - De afbeeldingsfunctie (bijvoorbeeld
*-aot
,*-extra
).
Afbeeldingen die zijn geoptimaliseerd voor grootte
De volgende afbeeldingen zijn gericht op het resultaat van de kleinste mogelijke afbeeldingsgrootte:
- Alpine
- Mariner distroless
- Ubuntu beiteld
Deze afbeeldingen zijn kleiner, omdat ze geen globaliseringsafhankelijkheden bevatten, zoals ICU of tzdata. Deze installatiekopieën werken alleen met apps die zijn geconfigureerd voor de invariante modus voor globalisatie. Als u een app wilt configureren voor invariante globalisatie, voegt u de volgende eigenschap toe aan het projectbestand:
<PropertyGroup>
<InvariantGlobalization>true</InvariantGlobalization>
</PropertyGroup>
Tip
SDK-installatiekopieën worden niet geproduceerd voor *-distroless
typen installatiekopieën of *-chiseled
installatiekopieën. Samengestelde afbeeldingen zijn het kleinste aspnet
aanbod voor Core CLR.
Afbeeldingen die geschikt zijn voor globalisatie
In containers geplaatste apps waarvoor globalisatie is vereist, wordt de grootte van de installatiekopieën vergroot, omdat ze globalisatieafhankelijkheden vereisen. Ubuntu- en Debian-installatiekopieën hebben ICU en tzdata al geïnstalleerd.
De tzdata-afhankelijkheid is toegevoegd aan de volgende afbeeldingen:
runtime-deps:8.0-jammy
runtime-deps:8.0-bookworm-slim
Deze globalisatietactiek wordt gebruikt door runtime
, aspnet
en sdk
afbeeldingen met dezelfde tag.
Belangrijk
Het toevoegen van tzdata aan Debian-boekwormafbeeldingen heeft geen praktisch effect, tenzij er een update is van tzdata (dat nog niet is opgenomen in Debian), waarna .NET-installatiekopieën een nieuwere tzdata bevatten.
Sommige pakketten zijn nog steeds optioneel, zoals Kerberos, LDAP en msquic. Deze pakketten zijn alleen vereist in nichescenario's.
Op scenario's gebaseerde installatiekopieën
De installatiekopieën van runtime-deps hebben een aanzienlijke waarde, met name omdat ze een standaardgebruikers- en poortdefinitie bevatten. Ze zijn handig om te gebruiken voor zelfstandige en systeemeigen AOT-scenario's. Het leveren van runtime-deps
installatiekopieën die nodig zijn voor de runtime - en SDK-installatiekopieën is echter niet voldoende om alle denkbare scenario's mogelijk te maken of optimale afbeeldingen te genereren.
De behoefte aan runtime-deps
uitbreiding op systeemeigen AOT- *-distroless
en *-chiseled
afbeeldingstypen. Voor elk besturingssysteem worden drie installatiekopieën opgegeven (allemaal in runtime-deps
). Bekijk het volgende voorbeeld met behulp van *-chiseled
afbeeldingen:
8.0-jammy-chiseled
: Afbeeldingen voor Core CLR, geen tzdata of ICU.8.0-jammy-chiseled-aot
: Installatiekopieën voor systeemeigen AOT, geen tzdata, ICU of stdc++.8.0-jammy-chiseled-extra
: Afbeelding voor zowel Core CLR als systeemeigen AOT, bevat tzdata, ICU en stdc++.
In termen van scenario's:
De 8.0-jammy-chiseled
afbeeldingen vormen de basis voor runtime
en aspnet
afbeeldingen van dezelfde tag. Standaard kunnen systeemeigen AOT-apps de 8.0-jammy-chiseled-aot
installatiekopieën gebruiken, omdat deze zijn geoptimaliseerd voor grootte. Systeemeigen AOT-apps en Core CLR zelfstandige/individuele bestands-apps waarvoor globalisatiefunctionaliteit is vereist, kunnen worden gebruikt 8.0-jammy-chiseled-extra
.
Alpine- en Mariner-afbeeldingen maken gebruik van hetzelfde schema.
Notitie
Debian- en Ubuntu-installatiekopieën (niet-beiteld) runtime-deps
hebben geen meerdere varianten.
Systeemeigen AOT-containerinstallatiekopieën
Systeemeigen AOT-installatiekopieën worden gepubliceerd naar de SDK-opslagplaats en getagd met het -aot
achtervoegsel. Met deze installatiekopieën kunt u systeemeigen AOT-apps bouwen. Ze worden gemaakt voor distributies met overeenkomende runtime-deps:*-aot
afbeeldingen. Deze installatiekopieën zijn groot, meestal twee keer zo groot als gewone SDK-installatiekopieën.
AOT-installatiekopieën worden gepubliceerd voor:
- Alpine
- Zeeman
- Ubuntu
Zie Systeemeigen AOT-implementatie voor meer informatie
Docker Hub-opslagplaatsen
Alle officiële Microsoft-installatiekopieën voor .NET worden gepubliceerd naar de microsoft-dotnet Docker Hub-organisatie. Houd rekening met de volgende opslagplaatsen.
.NET stabiele opslagplaatsen voor installatiekopieën:
Opslagplaats voor installatiekopieën | Afbeelding |
---|---|
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 |
Monsters | mcr.microsoft.com/dotnet/samples |
.NET-opslagplaatsen voor nachtinstallatiekopieën:
Opslagplaats voor installatiekopieën | Afbeelding |
---|---|
nightly-aspnet | mcr.microsoft.com/dotnet/nightly/aspnet |
nachtmonitor | 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 |
Opslagplaatsen voor .NET Framework-installatiekopieën:
Opslagplaats voor installatiekopieën | Afbeelding |
---|---|
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 |