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 de 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:
- Alpino
- 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 instalados.
La dependencia tzdata se agregó a las imágenes siguientes:
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
Agregar tzdata en 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 se incluye en Debian), en ese momento las imágenes de .NET incluirían una versión más reciente de tzdata.
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 ejemplo siguiente mediante imágenes de *-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 de 8.0-jammy-chiseled
son la base para las imágenes de runtime
y aspnet
de la misma etiqueta. De forma predeterminada, las aplicaciones AOT nativas pueden usar la imagen de 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 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 AOT nativas. 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:
- Alpino
- Marinero
- Ubuntu
Para más información, consulte Implementación con AOT nativa.
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 repositorios siguientes.
Repositorios de imágenes estables de .NET:
Repositorio de imágenes | Imagen |
---|---|
SDK. | mcr.microsoft.com/dotnet/sdk |
aspnet | mcr.microsoft.com/dotnet/aspnet |
tiempo de ejecución | mcr.microsoft.com/dotnet/runtime |
runtime-deps | mcr.microsoft.com/dotnet/runtime-deps |
supervisión | 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 |
---|---|
marco | mcr.microsoft.com/dotnet/framework |
framework-aspnet | mcr.microsoft.com/dotnet/framework/aspnet |
framework-runtime | mcr.microsoft.com/dotnet/framework/runtime |
ejemplos de marco | mcr.microsoft.com/dotnet/framework/samples |
framework-sdk | mcr.microsoft.com/dotnet/framework/sdk |
framework-wcf | mcr.microsoft.com/dotnet/framework/wcf |