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
, ,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:
- 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
, aspnet
e 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 *-distroless
nativo 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-extra
o .
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 |