Condividi tramite


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, aspnete 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, *-distrolesse *-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

Vedere anche