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 usati. Per altre informazioni sulle immagini ufficiali, vedere il repository Docker Hub: Microsoft .NET.
Schema di assegnazione di 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:
- Indicatore del framework di destinazione (TFM) dell'app.
- Sistema operativo, versione e architettura.
- Tipo di immagine , ad esempio
runtime
,aspnet
,sdk
). - Variante dell'immagine ( ad esempio,
*-distroless
,*-chiseled
). - La funzionalità dell'immagine (ad esempio,
*-aot
,*-extra
).
Immagini ottimizzate per le dimensioni
Le immagini seguenti sono ottimizzate per ottenere la dimensione file più piccola possibile.
- Alpino
- Mariner senza sistema operativo tradizionale
- Ubuntu Chiseled
Queste immagini sono più piccole, perché non includono dipendenze di globalizzazione, ad esempio ICU o tzdata. Queste immagini funzionano solo con le app configurate per la modalità invariabile di globalizzazione. Per configurare un'app per la globalizzazione invariante, aggiungere la proprietà seguente al file di progetto:
<PropertyGroup>
<InvariantGlobalization>true</InvariantGlobalization>
</PropertyGroup>
Consiglio
Le immagini SDK non vengono prodotte per *-distroless
o *-chiseled
tipi di immagine. Le immagini composite rappresentano la più piccola offerta di aspnet
per Core CLR.
Immagini adatte alla globalizzazione
Le app in container che richiedono la globalizzazione aumentano la dimensione dell'immagine, perché 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 utilizzata per le immagini runtime
, aspnet
e sdk
che hanno lo stesso tag.
Importante
L'aggiunta di tzdata alle immagini di Debian bookworm non ha alcun effetto pratico, a meno che non vi sia un aggiornamento di tzdata (che non è ancora incluso in Debian), momento in cui le immagini .NET includerebbero un tzdata più aggiornato.
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 standard di utente e porta. Sono comodi da utilizzare per scenari AOT autonomi e nativi. Tuttavia, fornire esclusivamente immagini runtime-deps
necessarie per il runtime di e sdk immagini non è sufficiente per abilitare tutti gli scenari immaginabili o generare immagini ottimali.
La necessità di runtime-deps
si estende anche ai tipi di immagine AOT nativi, *-distroless
e *-chiseled
. Per ogni sistema operativo vengono fornite tre varianti di immagine (tutte in runtime-deps
). Si consideri il seguente esempio utilizzando 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 runtime
e aspnet
immagini dello stesso tag. Per impostazione predefinita, le app AOT native possono usare l'immagine 8.0-jammy-chiseled-aot
, perché è ottimizzata per le dimensioni. Le app AOT native e le app CLR autonome/monofile che richiedono la funzionalità di globalizzazione possono usare 8.0-jammy-chiseled-extra
.
Le immagini Alpine e Mariner usano lo stesso schema.
Nota
Debian e Ubuntu (non modificati) runtime-deps
non hanno varianti multiple.
Immagini del contenitore AOT nativo
Le immagini AOT native vengono pubblicate nel repository sdk e contrassegnate con il suffisso -aot
. Queste immagini consentono di creare app AOT native. Vengono creati per le distribuzioni con immagini runtime-deps:*-aot
corrispondenti. Queste immagini sono grandi, comunemente due volte le dimensioni delle normali immagini SDK.
Le immagini AOT vengono pubblicate per:
- Alpino
- Marinaio
- Ubuntu
Per ulteriori informazioni, vedere AOT nativa distribuzione.
Docker Hub repository
Tutte le immagini Ufficiali di Microsoft per .NET vengono pubblicate nell'organizzazione microsoft-dotnet Docker Hub. Prendere in considerazione i repository seguenti.
repository delle immagini stabili di .NET:
Repository di immagini | Immagine |
---|---|
sdk | mcr.microsoft.com/dotnet/sdk |
aspnet | mcr.microsoft.com/dotnet/aspnet |
runtime | mcr.microsoft.com/dotnet/runtime |
dipendenze runtime di per | mcr.microsoft.com/dotnet/runtime-deps |
monitorare | mcr.microsoft.com/dotnet/monitor |
dashboard di aspirazione | mcr.microsoft.com/dotnet/aspire-dashboard |
esempi di | mcr.microsoft.com/dotnet/samples |
repository di immagini .NET notturne:
Repository di immagini | Immagine |
---|---|
nightly-aspnet | mcr.microsoft.com/dotnet/nightly/aspnet |
monitoraggio notturno | mcr.microsoft.com/dotnet/nightly/monitor |
dipendenze-notturne-di-runtime | mcr.microsoft.com/dotnet/nightly/runtime-deps |
di runtime notturno | mcr.microsoft.com/dotnet/nightly/runtime |
sdk notturno | mcr.microsoft.com/dotnet/nightly/sdk |
dashboard-notturno-aspira | mcr.microsoft.com/dotnet/nightly/aspire-dashboard |
repository di immagini di .NET Framework :
Repository di immagini | Immagine |
---|---|
framework | mcr.microsoft.com/dotnet/framework |
framework-aspnet | mcr.microsoft.com/dotnet/framework/aspnet |
ambiente di esecuzione del framework | mcr.microsoft.com/dotnet/framework/runtime |
esempi di framework | mcr.microsoft.com/dotnet/framework/samples |
framework-sdk | mcr.microsoft.com/dotnet/framework/sdk |
framework-wcf | mcr.microsoft.com/dotnet/framework/wcf |