Compartilhar via


Imagens de contêiner do .NET

O .NET fornece várias imagens de contêiner para diferentes cenários. Este artigo descreve os diferentes tipos de imagens e como elas são usadas. Para obter mais informações sobre as imagens oficiais, confira o repositório Docker Hub: Microsoft .NET.

Esquema de marcação

A partir do .NET 8, as imagens de contêiner são mais pragmáticas na forma como são diferenciadas. As seguintes características são usadas para diferenciar as imagens:

  • O TFM (Moniker da Estrutura de Destino) do aplicativo.
  • O sistema operacional, a versão e a arquitetura.
  • O tipo de imagem (por exemplo, runtime, aspnet, sdk).
  • A variante de imagem (por exemplo, *-distroless, *-chiseled).
  • O recurso de imagem (por exemplo, *-aot, *-extra).

Imagens otimizadas para o tamanho

As seguintes imagens são voltadas para resultar no menor tamanho de imagem possível:

  • Alpine
  • Mariner sem distribuição
  • Ubuntu cinzelado

Essas imagens são menores, pois não incluem dependências da globalização, como o ICU ou o tzdata. Essas imagens só funcionam nos aplicativos configurados para o modo invariável de globalização. Para configurar um aplicativo para a globalização invariável, adicione a seguinte propriedade ao arquivo de projeto:

<PropertyGroup>
  <InvariantGlobalization>true</InvariantGlobalization>
</PropertyGroup>

Dica

As imagens do SDK não são produzidas para is tipos de imagem *-distroless ou *-chiseled. As imagens compostas são a menor oferta do aspnet para o Core CLR.

Imagens adequadas à globalização

Os aplicativos conteinerizados que exigem a globalização aumentam o tamanho da imagem, pois exigem dependências de globalização. As imagens do Ubuntu e do Debian já têm o ICU e o tzdata instalados.

A dependência do tzdata foi adicionada às seguintes imagens:

  • runtime-deps:8.0-jammy
  • runtime-deps:8.0-bookworm-slim

Essa tática de globalização é usada pelas imagens runtime, aspnet e sdk com a mesma marca.

Importante

A adição do tzdata às imagens do Debian Bookworm não tem efeito prático, a menos que haja uma atualização para o tzdata (ainda não incluída no Debian), momento em que as imagens do .NET incluirão um tzdata mais recente.

Alguns pacotes ainda são opcionais, como o Kerberos, o LDAP e o MsQuic. Esses pacotes só são necessários em cenários de nicho.

Imagens baseadas em cenário

As imagens runtime-deps têm um valor significativo, especialmente porque incluem um usuário padrão e definições de porta. Elas são convenientes de usar em cenários de AOT nativo e autônomos. No entanto, apenas fornecer imagens runtime-deps que são necessárias para as imagens runtime e sdk não é suficiente para proporcionar todos os cenários imagináveis ou gerar imagens ideais.

A necessidade de runtime-deps se estende ao AOT nativo, ao *-distroless e aos tipos de imagem *-chiseled. Para cada sistema operacional, três variantes de imagem são fornecidas (todas em runtime-deps). Considere o seguinte exemplo usando imagens *-chiseled:

  • 8.0-jammy-chiseled: imagens para o Core CLR, sem o tzdata ou o ICU.
  • 8.0-jammy-chiseled-aot: imagens para o AOT nativo, sem o tzdata, o ICU ou o stdc++.
  • 8.0-jammy-chiseled-extra: imagem para o Core CLR e o AOT nativo, que inclui tzdata, ICU e stdc++.

Em termos de cenários:

As imagens 8.0-jammy-chiseled são a base das imagens runtime e aspnet da mesma marca. Por padrão, os aplicativos AOT nativo podem usar a imagem 8.0-jammy-chiseled-aot, pois ela é otimizada para o tamanho. Os aplicativos AOT nativo e os aplicativos de arquivo único/autônomos do Core CLR que exigem a funcionalidade de globalização podem usar o 8.0-jammy-chiseled-extra.

As imagens do Alpine e do Mariner usam o mesmo esquema.

Observação

As imagens runtime-deps do Debian e do Ubuntu (não cinzeladas) não têm múltiplas variantes.

Imagens de contêiner do AOT nativo

As imagens do AOT nativo são publicadas no repositório sdk e marcadas com o sufixo -aot. Essas imagens permitem a criação de aplicativos AOT nativo. Elas são criadas para distribuições com imagens runtime-deps:*-aot correspondentes. Essas imagens são grandes, geralmente com o dobro do tamanho das imagens normais do SDK.

As imagens do AOT são publicadas para:

  • Alpine
  • Mariner
  • Ubuntu

Para obter mais informações, confira Implantação do AOT nativo

Repositórios do Docker Hub

Todas as imagens oficiais da Microsoft para .NET são publicadas na organização microsoft-dotnet do Docker Hub. Considere os repositórios a seguir.

Repositórios de imagens estáveis do .NET:

Repositório de imagens Imagem
aspnet mcr.microsoft.com/dotnet/aspnet
monitor mcr.microsoft.com/dotnet/monitor
monitor-base mcr.microsoft.com/dotnet/monitor/base
runtime-deps mcr.microsoft.com/dotnet/runtime-deps
runtime mcr.microsoft.com/dotnet/runtime
amostras mcr.microsoft.com/dotnet/samples
sdk mcr.microsoft.com/dotnet/sdk

Repositórios de imagens do .NET Nightly:

Repositório de imagens Imagem
nightly mcr.microsoft.com/dotnet/nightly
nightly-aspnet mcr.microsoft.com/dotnet/nightly/aspnet
nightly-monitor-base mcr.microsoft.com/dotnet/nightly/monitor/base
nightly-monitor mcr.microsoft.com/dotnet/nightly/monitor
nightly-runtime-deps mcr.microsoft.com/dotnet/nightly/runtime-deps
nightly-runtime mcr.microsoft.com/dotnet/nightly/runtime
nightly-sdk mcr.microsoft.com/dotnet/nightly/sdk

Repositórios de imagens do .NET Framework:

Repositório de imagens Imagem
estrutura mcr.microsoft.com/dotnet/framework
framework-aspnet mcr.microsoft.com/dotnet/framework/aspnet
framework-runtime mcr.microsoft.com/dotnet/framework/runtime
framework-samples mcr.microsoft.com/dotnet/framework/samples
framework-sdk mcr.microsoft.com/dotnet/framework/sdk
framework-wcf mcr.microsoft.com/dotnet/framework/wcf

Confira também