Compartilhar via


Para qual sistema operacional direcionar com os contêineres do .NET

Dica

Esse conteúdo é um trecho do eBook da Arquitetura de Microsserviços do .NET para os Aplicativos .NET em Contêineres, disponível no .NET Docs ou como um PDF para download gratuito que pode ser lido offline.

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

Considerando a diversidade de sistemas operacionais compatíveis com o Docker e as diferenças entre o .NET Framework e o .NET 8, você deve direcionar um sistema operacional específico e versões específicas, dependendo da estrutura que você está usando.

Para o Windows, é possível usar o Windows Server Core ou o Windows Nano Server. Essas versões do Windows fornecem características diferentes (IIS no Windows Server Core versus um servidor Web auto-hospedado como o Kestrel no Nano Server) que podem ser necessárias pelo .NET Framework ou pelo .NET 8, respectivamente.

Para Linux, várias distribuições estão disponíveis e há compatibilidade com elas nas imagens oficiais do .NET Docker (como Debian).

Na Figura 3-1, veja a possível versão do sistema operacional dependendo da estrutura .NET usada.

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

Figura 3-1. Sistemas operacionais a serem direcionados dependendo das versões do .NET Framework

Ao implantar aplicativos .NET Framework herdados, é necessário definir o Windows Server Core como destino, que é compatível com aplicativos herdados e o IIS, mas tem uma imagem maior. Ao implantar aplicativos .NET 8, você pode direcionar o Windows Nano Server, que é otimizado para nuvem, usa o Kestrel e é menor e é iniciado mais rapidamente. Também é possível definir o Linux como destino, com suporte ao Debian, ao Alpine e a outras opções.

Também é possível criar sua própria imagem do Docker em casos em que você deseja usar uma distribuição diferente do Linux ou em que você quer uma imagem com versões não fornecidas pela Microsoft. Por exemplo, você pode criar uma imagem com o ASP.NET Core em execução no .NET Framework tradicional e no Windows Server Core, que é um cenário não tão comum para Docker.

Ao adicionar o nome de imagem ao seu arquivo Dockerfile, é possível selecionar o sistema operacional e a versão dependendo da marcação usada, como nos seguintes exemplos:

Imagem Comentários
mcr.microsoft.com/dotnet/runtime:8.0 .NET 8 multiarquitetura: dá suporte ao Linux e ao Windows Nano Server, dependendo do host do Docker.
mcr.microsoft.com/dotnet/aspnet:8.0 ASP.NET Core 8.0 multiarquitetura: dá suporte ao Linux e ao Windows Nano Server, dependendo do host do Docker.
A imagem aspnetcore tem algumas otimizações para ASP.NET Core.
mcr.microsoft.com/dotnet/aspnet:8.0-bullseye-slim Distribuição somente de runtime do .NET 8 no Linux Debian
mcr.microsoft.com/dotnet/aspnet:8.0-nanoserver-1809 Somente runtime do .NET 8 no Windows Nano Server (Windows Server versão 1809)