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 Docker Hub: repositório 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, , aspnetsdk).
  • 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:

  • Alpine
  • Mariner distroless
  • Ubuntu cinzelado

Essas imagens são menores, pois não incluem dependências de globalização, como UTI 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>

Gorjeta

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

Imagens adequadas para globalização

Os aplicativos em contêineres que exigem globalização inflam o tamanho da imagem, pois exigem 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

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

Importante

Adicionar tzdata a imagens de bookworm Debian não tem efeito prático, a menos que haja uma atualização para tzdata (que ainda não está incluída no Debian), momento em que as imagens .NET incluiriam 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 definições de usuário e porta padrão. Eles são convenientes de usar para cenários de AOT autônomos e nativos. No entanto, apenas fornecer runtime-deps imagens que são necessárias para o tempo de execução e imagens sdk não é suficiente para habilitar todos os cenários imagináveis ou gerar imagens ideais.

A necessidade de runtime-deps AOT *-distrolessnativo e *-chiseled também tipos de imagem. Para cada sistema operacional, três variantes de imagem são fornecidas (todas em runtime-deps). Considere o seguinte exemplo usando *-chiseled imagens:

  • 8.0-jammy-chiseled: Imagens para Core CLR, sem tzdata ou UTI.
  • 8.0-jammy-chiseled-aot: Imagens para AOT nativo, sem tzdata, UTI 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 8.0-jammy-chiseled imagens são a base para runtime e aspnet imagens da mesma tag. Por padrão, os aplicativos AOT nativos podem usar a imagem, uma vez que ela é otimizada para tamanho 8.0-jammy-chiseled-aot . Aplicativos AOT nativos e aplicativos Core CLR autônomos/de arquivo único que exigem funcionalidade de globalização podem usar 8.0-jammy-chiseled-extrao .

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

Nota

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

Imagens de contêiner AOT nativas

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 correspondentes runtime-deps:*-aot . Essas imagens são grandes, geralmente o dobro do tamanho das imagens SDK comuns.

As imagens AOT são publicadas para:

  • Alpine
  • Marinheiro
  • Ubuntu

Para obter mais informações, consulte Implantação nativa da 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 Image
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
Monitorizar mcr.microsoft.com/dotnet/monitor
painel de instrumentos aspirar mcr.microsoft.com/dotnet/aspire-dashboard
amostras mcr.microsoft.com/dotnet/samples

Repositórios de imagens noturnas do .NET:

Repositório de imagens Image
Noite-ASPNET mcr.microsoft.com/dotnet/nightly/aspnet
monitor noturno mcr.microsoft.com/dotnet/nightly/monitor
nightly-runtime-deps mcr.microsoft.com/dotnet/nightly/runtime-deps
Tempo de execução noturno mcr.microsoft.com/dotnet/nightly/runtime
Nightly-SDK mcr.microsoft.com/dotnet/nightly/sdk
painel noturno-aspirante mcr.microsoft.com/dotnet/nightly/aspire-dashboard

Repositórios de imagem do .NET Framework:

Repositório de imagens Image
arquitetura mcr.microsoft.com/dotnet/framework
framework-aspnet mcr.microsoft.com/dotnet/framework/aspnet
framework-tempo de execução 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

Consulte também