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
, aspnet
e 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, *-distroless
e *-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 |