Partilhar via


Imagens de contêiner .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 imagens oficiais, consulte 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 imagens:

  • O apelido da estrutura de destino (TFM) do aplicativo.
  • O SO, 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 tamanho

As imagens a seguir são focadas em resultar no menor tamanho de imagem possível:

  • Alpino
  • Mariner distroless
  • Ubuntu Chiseled

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

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

Dica

As imagens SDK não são produzidas para os tipos de imagem *-distroless ou *-chiseled. Imagens compostas são o menor oferecimento de aspnet para o Core CLR.

Imagens adequadas para globalização

As aplicações em contêineres que exigem globalização aumentam o tamanho da imagem, pois necessitam de dependências de globalização. As imagens Ubuntu e Debian já têm ICU e tzdata instaladas.

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

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

Esta tática de globalização é usada por imagens runtime, aspnete sdk com a mesma etiqueta.

Importante

Adicionar tzdata a imagens Debian bookworm não tem efeito prático, a menos que haja uma atualização para tzdata (que ainda não está incluída no Debian), ponto em que as imagens .NET passariam a incluir um tzdata mais recente.

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

Imagens baseadas em cenários

As imagens runtime-deps têm um valor significativo, especialmente porque incluem um utilizador padrão e definições de portas. Eles são convenientes para cenários de AOT autónomos e nativos. No entanto, fornecer apenas as imagens runtime-deps que são necessárias pelas imagens runtime e sdk não é suficiente para suportar todos os cenários possíveis ou gerar imagens otimizadas.

A necessidade de runtime-deps também se estende aos tipos de imagem nativos AOT, *-distrolesse *-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 Core CLR, sem tzdata ou ICU.
  • 8.0-jammy-chiseled-aot: Imagens para AOT nativo, sem tzdata, ICU ou stdc++.
  • 8.0-jammy-chiseled-extra: Imagem para CLR principal e AOT nativo, inclui tzdata, UTI e stdc++.

Em termos de cenários:

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

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

Observação

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

Imagens nativas de contentores AOT

As imagens AOT nativas são publicadas no repositório sdk e marcadas com o sufixo -aot. Essas imagens permitem a criação de aplicativos AOT nativos. Eles são criados para distros com imagens runtime-deps:*-aot correspondentes. Essas imagens são grandes, geralmente o dobro do tamanho das imagens SDK comuns.

As imagens AOT são publicadas para:

  • Alpino
  • Marinheiro
  • Ubuntu

Para obter mais informações, consulte implantação nativa do AOT.

Repositórios de hub do Docker

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

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

Repositório de imagens Imagem
SDK mcr.microsoft.com/dotnet/sdk
aspnet mcr.microsoft.com/dotnet/aspnet
tempo de execução mcr.microsoft.com/dotnet/runtime
runtime-deps mcr.microsoft.com/dotnet/runtime-deps
monitor mcr.microsoft.com/dotnet/monitor
de painel de controle de aspirar mcr.microsoft.com/dotnet/aspire-dashboard
amostras mcr.microsoft.com/dotnet/samples

repositórios de imagens noturnas do .NET:

Repositório de imagens Imagem
noturnas de aspnet mcr.microsoft.com/dotnet/nightly/aspnet
monitor noturno mcr.microsoft.com/dotnet/nightly/monitor
dependências-de-execução-noturna mcr.microsoft.com/dotnet/nightly/runtime-deps
versão noturna mcr.microsoft.com/dotnet/nightly/runtime
SDK de versão noturna mcr.microsoft.com/dotnet/nightly/sdk
painel de controle noturno do aspire mcr.microsoft.com/dotnet/nightly/aspire-dashboard

repositórios de imagens do .NET Framework:

Repositório de imagens Imagem
quadro mcr.microsoft.com/dotnet/framework
framework-aspnet mcr.microsoft.com/dotnet/framework/aspnet
de tempo de execução do framework mcr.microsoft.com/dotnet/framework/runtime
exemplos de estrutura mcr.microsoft.com/dotnet/framework/samples
framework-sdk mcr.microsoft.com/dotnet/framework/sdk
framework-wcf mcr.microsoft.com/dotnet/framework/wcf

Ver também