Immagini del contenitore .NET
.NET offre varie immagini del contenitore per diversi scenari. Questo articolo descrive i diversi tipi di immagini e il modo in cui vengono usate. Per altre informazioni sulle immagini ufficiali, vedere il repository Docker Hub: Microsoft .NET.
Schema di assegnazione dei tag
A partire da .NET 8, le immagini dei contenitori sono più pragmatiche nel modo in cui sono differenziate. Per distinguere le immagini vengono usate le caratteristiche seguenti:
- Il moniker framework di destinazione (TFM) dell'app.
- Il sistema operativo, la versione e l'architettura.
- Il tipo di immagine (ad esempio
runtime
,aspnet
,sdk
). - La variante dell'immagine (ad esempio
*-distroless
,*-chiseled
). - La caratteristica funzionalità dell'immagine (ad esempio
*-aot
,*-extra
).
Immagini ottimizzate per dimensioni
Le immagini seguenti sono incentrate sul raggiungimento delle dimensioni più ridotte possibili:
- Alpine
- Mariner senza distribuzione
- Ubuntu definito
Queste immagini sono più piccole, poiché non includono dipendenze di globalizzazione, ad esempio ICU o tzdata. Tali immagini funzionano solo con le app configurate per la globalizzazione in modalità invariante. Per configurare un'app per la globalizzazione invariante, aggiungere la proprietà seguente al file di progetto:
<PropertyGroup>
<InvariantGlobalization>true</InvariantGlobalization>
</PropertyGroup>
Suggerimento
Le immagini SDK non vengono prodotte per i tipi di immagine *-distroless
o *-chiseled
. Le immagini composite rappresentano l'offerta aspnet
più piccola per Core CLR.
Immagini idonee alla globalizzazione
Le app in contenitori che richiedono la globalizzazione gonfiano le dimensioni dell'immagine, poiché richiedono dipendenze di globalizzazione. Le immagini Ubuntu e Debian hanno già installato ICU e tzdata.
La dipendenza tzdata è stata aggiunta alle immagini seguenti:
runtime-deps:8.0-jammy
runtime-deps:8.0-bookworm-slim
Questa tattica di globalizzazione viene usata dalle immagini runtime
, aspnet
e sdk
con lo stesso tag.
Importante
L'aggiunta di tzdata alle immagini bookworm Debian non ha alcun effetto pratico, a meno che non sia presente un aggiornamento di tzdata (che non è ancora incluso in Debian), a quel punto le immagini .NET includerebbero un tzdata più recente.
Alcuni pacchetti sono ancora facoltativi, ad esempio Kerberos, LDAP e msquic. Questi pacchetti sono necessari solo in scenari di nicchia.
Immagini basate su scenari
Le immagini runtime-deps hanno un valore significativo, in particolare perché includono definizioni utente e porta standard. Sono utili per l'uso in scenari AOT autonomi e nativi. Tuttavia, fornire esclusivamente immagini runtime-deps
necessarie per il runtime e le immagini sdk non è sufficiente per abilitare tutti gli scenari immaginabili o generare immagini ottimali.
La necessità di runtime-deps
di estendersi anche ai tipi di immagine AOT, *-distroless
e *-chiseled
nativi. Per ogni sistema operativo, vengono fornite tre varianti di immagine (tutte in runtime-deps
). Considerare l'esempio seguente di utilizzo delle immagini *-chiseled
:
8.0-jammy-chiseled
: immagini per CORE CLR, senza tzdata o ICU.8.0-jammy-chiseled-aot
: immagini per AOT nativo, senza tzdata, ICU o stdc++.8.0-jammy-chiseled-extra
: immagine sia per Core CLR che per AOT nativo include tzdata, ICU e stdc++.
In termini di scenari:
Le immagini 8.0-jammy-chiseled
sono la base per le immagini runtime
e aspnet
dello stesso tag. Per impostazione predefinita, le app AOT nativo possono usare l'immagine 8.0-jammy-chiseled-aot
, poiché è ottimizzata per le dimensioni. Le app AOT native e le app Core CLR autonome o a file singolo che richiedono la funzionalità di globalizzazione possono usare 8.0-jammy-chiseled-extra
.
Le immagini Alpine e Mariner usano lo stesso schema.
Nota
Le immagini runtime-deps
Debian e Ubuntu (non definite) non hanno più varianti.
Immagini del contenitore AOT nativo
Le immagini AOT nativo vengono pubblicate nel repository sdk e contrassegnate con il suffisso -aot
. Queste immagini consentono di creare app come AOT nativo. Vengono create per le distribuzioni con immagini runtime-deps:*-aot
corrispondenti. Tale immagini sono grandi, comunemente due volte le dimensioni delle normali immagini SDK.
Le immagini AOT vengono pubblicate per:
- Alpine
- Mariner
- Ubuntu
Per altre informazioni, vedere Distribuzione con AOT nativo
Repository dell'hub Docker
Tutte le immagini Microsoft ufficiali per .NET vengono pubblicate nell'organizzazione Docker Hub microsoft-dotnet. Prendere in considerazione i repository seguenti.
Repository di immagini stabili .NET:
Repository di immagini | Immagine |
---|---|
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 |
- esempi | mcr.microsoft.com/dotnet/samples |
Repository di immagini .NET notturne:
Repository di immagini | Immagine |
---|---|
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 |
Repository di immagini di .NET Framework:
Repository di immagini | Image |
---|---|
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 |