Поделиться через


Образы контейнеров .NET

.NET предоставляет различные образы контейнеров для различных сценариев. В этой статье описываются различные типы изображений и их использование. Дополнительные сведения о официальных образах см. в репозитории Docker Hub: Microsoft .NET .

Схема присвоения тегов

Начиная с .NET 8 образы контейнеров более прагматичны в том, как они отличаются. Для отличия изображений используются следующие характеристики:

  • Моникер целевой платформы (TFM) приложения.
  • ОС, версия и архитектура.
  • Тип изображения (например, runtime, aspnet, sdk).
  • Вариант изображения (например, *-distroless, *-chiseled).
  • Функция изображения (например, *-aot, *-extra).

Изображения, оптимизированные для размера

Следующие изображения сосредоточены на том, что размер изображения будет наименьшим.

  • Алпайн
  • Морской пехотинец дистрибутив
  • Осколки Ubuntu

Эти изображения меньше, так как они не включают зависимости глобализации, такие как, ICU или tzdata. Эти образы работают только с приложениями, настроенными для инвариантного режима глобализации. Чтобы настроить приложение для инвариантной глобализации, добавьте в файл проекта следующее свойство:

<PropertyGroup>
  <InvariantGlobalization>true</InvariantGlobalization>
</PropertyGroup>

Совет

Образы пакета SDK не создаются для *-distroless типов образов или *-chiseled образов. Составные изображения — это наименьшее aspnet предложение для Core CLR.

Изображения, подходящие для глобализации

Контейнерные приложения, требующие глобализации, расширяют размер изображения, так как им требуются зависимости глобализации. Образы Ubuntu и Debian уже установлены iCU и tzdata.

Зависимость tzdata была добавлена на следующие образы:

  • runtime-deps:8.0-jammy
  • runtime-deps:8.0-bookworm-slim

Эта тактика глобализации используется и изображениями с тем же тегомruntimeaspnetsdk.

Внимание

Добавление tzdata в образы Debian bookworm не имеет практического эффекта, если только нет обновления tzdata (который еще не включен в Debian), в то время как образы .NET будут включать более новую tzdata.

Некоторые пакеты по-прежнему необязательны, например Kerberos, LDAP и msquic. Эти пакеты необходимы только в нишевых сценариях.

Образы на основе сценариев

Изображения среды выполнения имеют значительное значение, особенно так как они включают стандартные определения пользователей и портов. Они удобны для автономных и собственных сценариев AOT. Однако только предоставление runtime-deps изображений, необходимых для среды выполнения и образов пакета SDK , недостаточно для включения всех доступных сценариев или создания оптимальных образов.

Необходимость runtime-deps расширения собственных типов AOT *-distrolessи *-chiseled типов изображений. Для каждой ОС предоставляются три варианта образа (все в runtime-deps). Рассмотрим следующий пример с помощью *-chiseled изображений:

  • 8.0-jammy-chiseled: изображения для Core CLR, без tzdata или ICU.
  • 8.0-jammy-chiseled-aot: изображения для собственного AOT, без tzdata, ICU или stdc++.
  • 8.0-jammy-chiseled-extra: образ для core CLR и собственного AOT, включает tzdata, ICU и stdc++.

С точки зрения сценариев:

Изображения 8.0-jammy-chiseled являются основой runtime для и aspnet изображений одного и того же тега. По умолчанию собственные приложения AOT могут использовать 8.0-jammy-chiseled-aot образ, так как он оптимизирован для размера. Собственные приложения AOT и автономные или отдельные приложения СРЕДЫ CLR, требующие функций глобализации, могут использовать 8.0-jammy-chiseled-extra.

Изображения Alpine и Mariner используют ту же схему.

Примечание.

Образы Debian и Ubuntu (не чиселированные) runtime-deps не имеют нескольких вариантов.

Собственные образы контейнеров AOT

Собственные образы AOT публикуются в репозитории sdk и помечены суффиксом -aot . Эти образы позволяют создавать собственные приложения AOT. Они создаются для дистрибутивов с соответствующими изображениями runtime-deps:*-aot . Эти изображения являются большими, как правило, в два раза больше обычных образов пакета SDK.

Изображения AOT публикуются для:

  • Алпайн
  • Mariner
  • Ubuntu

Дополнительные сведения см. в статье о развертывании AOT в машинном коде

Репозитории Центра Docker

Все официальные образы Майкрософт для .NET публикуются в организации Microsoft-dotnet Docker Hub. Рассмотрим следующие репозитории.

Репозитории устойчивых образов .NET:

Репозиторий изображений Изображения
Aspnet mcr.microsoft.com/dotnet/aspnet
monitor mcr.microsoft.com/dotnet/monitor
monitor-base mcr.microsoft.com/dotnet/monitor/base
среда выполнения-deps mcr.microsoft.com/dotnet/runtime-deps
среда выполнения mcr.microsoft.com/dotnet/runtime
примеры mcr.microsoft.com/dotnet/samples
sdk mcr.microsoft.com/dotnet/sdk

Репозитории изображений .NET ночью:

Репозиторий изображений Изображения
Ночные mcr.microsoft.com/dotnet/nightly
nightly-aspnet mcr.microsoft.com/dotnet/nightly/aspnet
nightly-monitor-base mcr.microsoft.com/dotnet/nightly/monitor/base
ночной монитор mcr.microsoft.com/dotnet/nightly/monitor
nightly-runtime-deps mcr.microsoft.com/dotnet/nightly/runtime-deps
ночное время выполнения mcr.microsoft.com/dotnet/nightly/runtime
nightly-sdk mcr.microsoft.com/dotnet/nightly/sdk

репозитории изображений платформа .NET Framework:

Репозиторий изображений Изображения
Рамках mcr.microsoft.com/dotnet/framework
framework-aspnet mcr.microsoft.com/dotnet/framework/aspnet
среда выполнения платформы mcr.microsoft.com/dotnet/framework/runtime
примеры платформы mcr.microsoft.com/dotnet/framework/samples
Framework-sdk mcr.microsoft.com/dotnet/framework/sdk
framework-wcf mcr.microsoft.com/dotnet/framework/wcf

См. также