Imagens de contêiner do .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 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 na forma como são diferenciadas. As seguintes características são usadas para diferenciar as 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 de imagem (por exemplo,
*-distroless
,*-chiseled
). - O recurso de imagem (por exemplo,
*-aot
,*-extra
).
Imagens otimizadas para o tamanho
As seguintes imagens são voltadas para resultar no menor tamanho de imagem possível:
- Alpine
- Mariner sem distribuição
- Ubuntu cinzelado
Essas imagens são menores, pois não incluem dependências da globalização, como o ICU ou o tzdata. Essas imagens só funcionam nos aplicativos configurados para o modo invariável de globalização. Para configurar um aplicativo para a 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 is tipos de imagem *-distroless
ou *-chiseled
. As imagens compostas são a menor oferta do aspnet
para o Core CLR.
Imagens adequadas à globalização
Os aplicativos conteinerizados que exigem a globalização aumentam o tamanho da imagem, pois exigem dependências de globalização. As imagens do Ubuntu e do Debian já têm 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 o Kerberos, o LDAP e o MsQuic. Esses pacotes só são necessários 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 ao AOT nativo, ao *-distroless
e aos tipos de imagem *-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 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 das imagens runtime
e aspnet
da mesma marca. Por padrão, os aplicativos AOT nativo podem usar a imagem 8.0-jammy-chiseled-aot
, pois ela é otimizada para o 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 do Alpine e do Mariner usam o mesmo esquema.
Observação
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 do AOT nativo são publicadas no repositório sdk e marcadas com o sufixo -aot
. Essas imagens permitem a criação de aplicativos AOT nativo. Elas são criadas para distribuições com imagens runtime-deps:*-aot
correspondentes. Essas imagens são grandes, geralmente com o dobro do tamanho das imagens normais do SDK.
As imagens do AOT são publicadas para:
- Alpine
- Mariner
- Ubuntu
Para obter mais informações, confira Implantação do AOT nativo
Repositórios do Docker Hub
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 imagens | Imagem |
---|---|
aspnet | mcr.microsoft.com/dotnet/aspnet |
monitor | mcr.microsoft.com/dotnet/monitor |
monitor-base | mcr.microsoft.com/dotnet/monitor/base |
runtime-deps | mcr.microsoft.com/dotnet/runtime-deps |
runtime | mcr.microsoft.com/dotnet/runtime |
amostras | mcr.microsoft.com/dotnet/samples |
sdk | mcr.microsoft.com/dotnet/sdk |
Repositórios de imagens do .NET Nightly:
Repositório de imagens | Imagem |
---|---|
nightly | mcr.microsoft.com/dotnet/nightly |
nightly-aspnet | mcr.microsoft.com/dotnet/nightly/aspnet |
nightly-monitor-base | mcr.microsoft.com/dotnet/nightly/monitor/base |
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 |
Repositórios de imagens do .NET Framework:
Repositório de imagens | Imagem |
---|---|
estrutura | mcr.microsoft.com/dotnet/framework |
framework-aspnet | mcr.microsoft.com/dotnet/framework/aspnet |
framework-runtime | mcr.microsoft.com/dotnet/framework/runtime |
framework-samples | mcr.microsoft.com/dotnet/framework/samples |
framework-sdk | mcr.microsoft.com/dotnet/framework/sdk |
framework-wcf | mcr.microsoft.com/dotnet/framework/wcf |
Confira também
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de