Quel système d’exploitation cibler avec les conteneurs .NET

Conseil

Ce contenu est un extrait du livre électronique « .NET Microservices Architecture for Containerized .NET Applications », disponible sur .NET Docs ou sous forme de PDF téléchargeable gratuitement et pouvant être lu hors ligne.

.NET Microservices Architecture for Containerized .NET Applications eBook cover thumbnail.

Compte tenu de la diversité des systèmes d’exploitation pris en charge par Docker et des différences entre .NET Framework et .NET 8, vous devez cibler le système d’exploitation et les versions spécifiques en fonction du framework que vous utilisez.

Pour Windows, vous pouvez utiliser Windows Server Core ou Windows Nano Server. Ces versions de Windows offrent des caractéristiques différentes (IIS dans Windows Server Core ou un serveur web auto-hébergé comme Kestrel dans Nano Server) qui peuvent être nécessaires à .NET Framework ou .NET 8, respectivement.

Pour Linux, plusieurs distributions sont disponibles et prises en charge dans les images .NET Docker officielles (comme Debian).

La figure 3-1 indique la version du système d’exploitation à utiliser en fonction de la version de .NET Framework utilisée.

Diagram showing what OS to use with which .NET containers.

Figure 3-1. systèmes d’exploitation à cibler en fonction des versions de .NET Framework

Quand vous déployez des applications .NET Framework héritées, vous devez cibler Windows Server Core, compatible avec les applications héritées et IIS, dont l’image est cependant plus grande. Lorsque vous déployez des applications .NET 8, vous pouvez cibler Windows Nano Server, car il est optimisé pour le cloud, il utilise Kestrel, il est plus léger et il démarre plus rapidement. Vous pouvez également cibler Linux, prenant en charge Debian, Alpine et d’autres.

Vous pouvez aussi créer votre propre image Docker si souhaitez utiliser une autre distribution Linux ou une image contenant des versions non fournies par Microsoft. Par exemple, vous pouvez créer une image avec ASP.NET Core s’exécutant sur le .NET Framework classique et Windows Server Core, ce qui n’est pas un scénario très courant pour Docker.

Au moment d’ajouter le nom de l’image à votre fichier Dockerfile, vous pouvez sélectionner le système d’exploitation et la version en fonction de la balise que vous utilisez, comme dans les exemples suivants :

Image Commentaires
mcr.microsoft.com/dotnet/runtime:8.0 Multi-architecture .NET 8 : prend en charge Linux et Windows Nano Server en fonction de l’hôte Docker.
mcr.microsoft.com/dotnet/aspnet:8.0 Multi-architecture ASP.NET Core 8.0 : prend en charge Linux et Windows Nano Server en fonction de l’hôte Docker.
L’image aspnetcore a quelques optimisations pour ASP.NET Core.
mcr.microsoft.com/dotnet/aspnet:8.0-bullseye-slim Runtime uniquement .NET 8 sur distribution Linux Debian
mcr.microsoft.com/dotnet/aspnet:8.0-nanoserver-1809 Runtime uniquement .NET 8 sur Windows Nano Server (Windows Server version 1809)