Come scegliere il sistema operativo per i contenitori .NET
Suggerimento
Questo contenuto è un estratto dell'eBook "Microservizi .NET: Architettura per le applicazioni .NET incluse in contenitori", disponibile in .NET Docs o come PDF scaricabile gratuitamente e da poter leggere offline.
Considerata la varietà di sistemi operativi supportati da Docker e le differenze tra .NET Framework e .NET 8, è necessario scegliere un sistema operativo e le versioni specifiche a seconda del framework in uso.
Per Windows, è possibile usare Windows Server Core o Windows Nano Server. Queste versioni di Windows offrono caratteristiche diverse (IIS in Windows Server Core rispetto a un server Web self-hosted come Kestrel in Windows Nano Server) che potrebbero essere richieste rispettivamente da .NET Framework o .NET 8.
Per Linux, sono disponibili più distribuzioni supportate in immagini Docker. NET ufficiali, ad esempio Debian.
Nella figura 3-1 sono mostrate le versioni possibili del sistema operativo a seconda del framework .NET usato.
Figura 3-1. Sistemi operativi possibili a seconda delle versioni del framework .NET
Quando si distribuiscono applicazioni .NET Framework legacy, è necessario usare come destinazione Windows Server Core, che è compatibile con le app legacy e IIS, ma ha un'immagine di dimensioni maggiori. Quando si distribuiscono applicazioni .NET 8, è possibile usare come destinazione Windows Nano Server, che è ottimizzato per il cloud, usa Kestrel, è di dimensioni inferiori e viene avviato più rapidamente. È anche possibile usare come destinazione Linux, che supporta Debian, Alpine e altri sistemi.
È anche possibile creare un'immagine Docker personalizzata, se si vuole usare una distribuzione Linux diversa o un'immagine con versioni non fornite da Microsoft. Si può ad esempio creare un'immagine con ASP.NET Core in esecuzione in .NET Framework tradizionale e in Windows Server Core, che non rappresenta uno scenario così comune per Docker.
Quando si aggiunge il nome dell'immagine al file Dockerfile, è possibile selezionare il sistema operativo e la versione a seconda del tag usato, come negli esempi seguenti:
Image | Commenti |
---|---|
mcr.microsoft.com/dotnet/runtime:8.0 | Multiarchitettura .NET 8: supporta Linux e Windows Nano Server a seconda dell'host Docker. |
mcr.microsoft.com/dotnet/aspnet:8.0 | Multiarchitettura ASP .NET Core 8.0: supporta Linux e Windows Nano Server a seconda dell'host Docker. L'immagine aspnetcore ha poche ottimizzazioni per ASP.NET Core. |
mcr.microsoft.com/dotnet/aspnet:8.0-bullseye-slim | Solo runtine .NET 8 in distribuzione Linux Debian |
mcr.microsoft.com/dotnet/aspnet:8.0-nanoserver-1809 | Solo runtime .NET 8 in Windows Nano Server (Windows Server versione 1809) |
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per