Imágenes de contenedor de .NET
.NET proporciona varias imágenes de contenedor para distintos escenarios. En este artículo se describen los diferentes tipos de imágenes y cómo se usan. Para obtener más información sobre las imágenes oficiales, consulte el repositorio Docker Hub: Microsoft .NET.
Esquema de etiquetado
A partir de .NET 8, las imágenes de contenedor son más pragmáticas en cómo se diferencian. Las siguientes características se usan para diferenciar imágenes:
- El moniker de la plataforma de destino (TFM) de la aplicación.
- El sistema operativo, la versión y la arquitectura.
- Tipo de imagen (por ejemplo,
runtime
,aspnet
,sdk
). - Variante de imagen (por ejemplo,
*-distroless
,*-chiseled
). - Característica de imagen (por ejemplo,
*-aot
,*-extra
).
Imágenes optimizadas para el tamaño
Las siguientes imágenes se centran en generar el tamaño de imagen más pequeño posible:
- Alpine
- Mariner sin distribución
- Ubuntu cincelado
Estas imágenes son más pequeñas, ya que no incluyen dependencias de globalización como, ICU o tzdata. Estas imágenes solo funcionan con aplicaciones configuradas para el modo invariable de globalización. Para configurar una aplicación para la globalización invariable, agregue la siguiente propiedad al archivo del proyecto:
<PropertyGroup>
<InvariantGlobalization>true</InvariantGlobalization>
</PropertyGroup>
Sugerencia
Las imágenes del SDK no se generan para los tipos de imagen *-distroless
o *-chiseled
. Las imágenes compuestas son la oferta aspnet
más pequeña para Core CLR.
Imágenes adecuadas para la globalización
Las aplicaciones en contenedores que requieren globalización inflan el tamaño de la imagen, ya que requieren dependencias de globalización. Las imágenes de Ubuntu y Debian ya tienen ICU y tzdata instaladas.
La dependencia tzdata se agregó a las siguientes imágenes:
runtime-deps:8.0-jammy
runtime-deps:8.0-bookworm-slim
Esta táctica de globalización se usa en las imágenes runtime
, aspnet
y sdk
con la misma etiqueta.
Importante
Añadir tzdata a las imágenes de Debian Bookworm no tiene ningún efecto práctico, a menos que haya una actualización de tzdata (que aún no esté incluida en Debian), en cuyo caso las imágenes .NET incluirían un tzdata más reciente.
Algunos paquetes siguen siendo opcionales, como Kerberos, LDAP y msquic. Estos paquetes solo son necesarios en escenarios de nicho.
Imágenes basadas en escenarios
Las imágenes runtime-deps tienen un valor significativo, especialmente porque incluyen definiciones de puerto y usuario estándar. Son cómodas de usar para escenarios AOT independientes y nativos. Sin embargo, proporcionar únicamente imágenes runtime-deps
necesarias para las imágenes en runtime y sdk no es suficiente para habilitar todos los escenarios imaginables o generar imágenes óptimas.
La necesidad de runtime-deps
se extiende también a los tipos de imagen AOT, *-distroless
y *-chiseled
nativos. Para cada sistema operativo, se proporcionan tres variantes de imagen (todas en runtime-deps
). Considere el siguiente ejemplo mediante imágenes *-chiseled
:
8.0-jammy-chiseled
: imágenes de Core CLR, sin tzdata o ICU.8.0-jammy-chiseled-aot
: imágenes para AOT nativo, sin tzdata, ICU o stdc++.8.0-jammy-chiseled-extra
: imagen para Core CLR y AOT nativo, incluye tzdata, ICU y stdc++.
En términos de escenarios:
Las imágenes 8.0-jammy-chiseled
son la base de las imágenes runtime
y aspnet
de la misma etiqueta. De forma predeterminada, las aplicaciones de AOT nativo pueden usar la imagen 8.0-jammy-chiseled-aot
, ya que está optimizada para el tamaño. Las aplicaciones de AOT nativo y Core CLR autocontenido o aplicaciones de archivos únicos que requieren funcionalidad de globalización pueden usar 8.0-jammy-chiseled-extra
.
Las imágenes de Alpine y Mariner usan el mismo esquema.
Nota:
Las imágenes de Debian y Ubuntu (no cinceladas) runtime-deps
no tienen varias variantes.
Imágenes de contenedor de AOT nativo
Las imágenes de AOT nativo se publican en el repositorio del SDK y se etiquetan con el sufijo -aot
. Estas imágenes permiten crear aplicaciones de AOT nativo. Se crean para distribuciones con imágenes runtime-deps:*-aot
coincidentes. Estas imágenes son grandes, normalmente dos veces el tamaño de las imágenes de SDK normales.
Las imágenes de AOT se publican para:
- Alpine
- Mariner
- Ubuntu
Para más información, consulte Implementación con AOT nativo
Repositorios de Docker Hub
Todas las imágenes oficiales de Microsoft para .NET se publican en la organización de Docker Hub microsoft-dotnet. Tenga en cuenta los siguientes repositorios.
Repositorios de imágenes estables de .NET:
Repositorio de imágenes | Imagen |
---|---|
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 |
ejemplos | mcr.microsoft.com/dotnet/samples |
Repositorios de imágenes nocturnas de .NET:
Repositorio de imágenes | Imagen |
---|---|
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 |
Repositorios de imágenes de .NET Framework:
Repositorio de imágenes | Imagen |
---|---|
framework | 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 |