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 Image
aspnet mcr.microsoft.com/dotnet/aspnet
monitor mcr.microsoft.com/dotnet/monitor
monitor-base mcr.microsoft.com/dotnet/monitor/base
runtime-deps mcr.microsoft.com/dotnet/runtime-deps
runtime mcr.microsoft.com/dotnet/runtime
- esempi mcr.microsoft.com/dotnet/samples
sdk mcr.microsoft.com/dotnet/sdk

Repository di immagini .NET notturne:

Repository di immagini Image
nightly mcr.microsoft.com/dotnet/nightly
nightly-aspnet mcr.microsoft.com/dotnet/nightly/aspnet
nightly-monitor-base mcr.microsoft.com/dotnet/nightly/monitor/base
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

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

Vedi anche