Selección del sistema operativo de destino con contenedores de .NET

Sugerencia

Este contenido es un extracto del libro electrónico, ".NET Microservices Architecture for Containerized .NET Applications" (Arquitectura de microservicios de .NET para aplicaciones de .NET contenedorizadas), disponible en Documentación de .NET o como un PDF descargable y gratuito que se puede leer sin conexión.

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

Teniendo en cuenta la diversidad de sistemas operativos que admite Docker y las diferencias entre .NET Framework y .NET 8, debe escoger un sistema operativo de destino específico y versiones concretas según el marco que utilice.

Para Windows, puede usar Windows Server Core o Nano Server de Windows. Estas versiones de Windows proporcionan diferentes características (IIS en Windows Server Core frente a un servidor web autohospedado, como Kestrel, en Nano Server) que .NET Framework o .NET 8, respectivamente, podrían necesitar.

Para Linux, hay varias distribuciones disponibles y compatibles en imágenes oficiales del Docker de .NET (por ejemplo, Debian).

En la figura 3-1, se observa la posible versión del sistema operativo en función de la versión de .NET Framework que se utilice.

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

Figura 3-1. Sistemas operativos de destino en función de las versiones de .NET Framework

Al implementar aplicaciones heredadas de .NET Framework, tiene que elegir como destino Windows Server Core, que es compatible con aplicaciones heredadas e IIS, pero tiene una imagen más grande. Al implementar aplicaciones de .NET 8, puede tener como destino Windows Nano Server, que está optimizado para la nube, usa Kestrel, es más pequeño y se inicia más rápido. También puede tener como destino Linux, que es compatible con Debian, Alpine y otros.

También puede crear su propia imagen de Docker en los casos en que quiera utilizar una distribución de Linux diferente o que quiera una imagen con las versiones no proporcionadas por Microsoft. Por ejemplo, puede crear una imagen con ASP.NET Core ejecutándose en los tradicionales .NET Framework y Windows Server Core, que no sería un escenario tan habitual para Docker.

Al agregar el nombre de imagen al archivo Dockerfile, puede seleccionar el sistema operativo y la versión dependiendo de la etiqueta que utilice, como en los ejemplos siguientes:

Imagen Comentarios
mcr.microsoft.com/dotnet/runtime:8.0 Arquitectura múltiple de .NET 8: admite Linux y Windows Nano Server en función del host de Docker.
mcr.microsoft.com/dotnet/aspnet:8.0 La arquitectura múltiple de ASP.NET Core 8.0: es compatible con Linux y Windows Nano Server en función del host de Docker.
La imagen de aspnetcore tiene algunas optimizaciones para ASP.NET Core.
mcr.microsoft.com/dotnet/aspnet:8.0-bullseye-slim Solo entorno de ejecución de .NET 8 en una distribución de Linux Debian
mcr.microsoft.com/dotnet/aspnet:8.0-nanoserver-1809 Solo entorno de ejecución de .NET 8 en Windows Nano Server (Windows Server 1809)