Imagens de contêiner do .NET
O .NET fornece várias imagens de contêiner para cenários diferentes. 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 em como são diferenciadas. As seguintes características são usadas para diferenciar 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 da imagem (por exemplo,
*-distroless
,*-chiseled
). - O recurso de imagem (por exemplo,
*-aot
,*-extra
).
Imagens otimizadas para tamanho
As imagens a seguir se concentram em resultar no menor tamanho de imagem possível:
- Alpino
- Mariner sem distribuição
- Ubuntu cinzelado
Essas imagens são menores, pois não incluem dependências de globalização, como ICU ou tzdata. Essas imagens funcionam apenas com aplicativos configurados para o modo invariável de globalização. Para configurar um aplicativo para 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 tipos de imagem *-distroless
ou *-chiseled
. As imagens compostas são a menor oferta do aspnet
para o Core CLR.
Imagens adequadas para globalização
Os aplicativos conteinerizados que exigem a globalização aumentam o tamanho da imagem, pois exigem dependências de globalização. As imagens Ubuntu e Debian já possuem 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 Kerberos, LDAP e msquic. Esses pacotes são necessários apenas 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 também aos tipos nativos de imagem AOT, *-distroless
e *-chiseled
. Para cada sistema operacional, três variantes de imagem são fornecidas (todas em runtime-deps
). Considere o exemplo a seguir 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 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
, pois ela é otimizada para 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 Alpine e Mariner usam o mesmo esquema.
Nota
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 AOT nativas são publicadas no repositório do SDK e marcadas com o sufixo -aot
. Essas imagens permitem a criação de aplicativos AOT nativos. Elas são criadas para distribuições com imagens runtime-deps:*-aot
correspondentes. Essas imagens são grandes, geralmente o dobro do tamanho de imagens regulares do SDK.
As imagens do AOT são publicadas para:
- Alpino
- Marujo
- Ubuntu
Para obter mais informações, consulte Implantação do AOT nativo.
Repositórios de hub do Docker
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 imagem | Imagem |
---|---|
sdk | mcr.microsoft.com/dotnet/sdk |
aspnet | mcr.microsoft.com/dotnet/aspnet |
runtime | mcr.microsoft.com/dotnet/runtime |
runtime-deps | mcr.microsoft.com/dotnet/runtime-deps |
monitor | mcr.microsoft.com/dotnet/monitor |
aspire-dashboard | mcr.microsoft.com/dotnet/aspire-dashboard |
samples | mcr.microsoft.com/dotnet/samples |
Repositórios de imagens do .NET Nightly:
Repositório de imagem | Imagem |
---|---|
nightly-aspnet | mcr.microsoft.com/dotnet/nightly/aspnet |
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 |
nightly-aspire-dashboard | mcr.microsoft.com/dotnet/nightly/aspire-dashboard |
Repositórios de imagens do .NET Framework:
Repositório de imagem | Imagem |
---|---|
estrutura | mcr.microsoft.com/dotnet/framework |
framework-aspnet | mcr.microsoft.com/dotnet/framework/aspnet |
framework-runtime | mcr.microsoft.com/dotnet/framework/runtime |
exemplos de frameworks | mcr.microsoft.com/dotnet/framework/samples |
framework-sdk | mcr.microsoft.com/dotnet/framework/sdk |
framework-wcf | mcr.microsoft.com/dotnet/framework/wcf |