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


Образы контейнеров .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

Эта тактика глобализации используется в изображениях runtime, aspnetи sdk, что имеют тот же тег.

Важный

Добавление 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, так как он оптимизирован для размера. Приложения Native AOT и самодостаточные/одиночные приложения Core CLR, которым требуются функции глобализации, могут использовать 8.0-jammy-chiseled-extra.

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

Заметка

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

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

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

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

  • Альпийский
  • Моряк
  • Ubuntu

Для получения дополнительной информации см. развертывание Native AOT.

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

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

стабильные репозитории образов .NET:

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

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

Репозиторий изображений Образ
ночная aspnet mcr.microsoft.com/dotnet/nightly/aspnet
ночной монитор mcr.microsoft.com/dotnet/nightly/monitor
ночная среда выполнения-deps mcr.microsoft.com/dotnet/nightly/runtime-deps
ночной среды выполнения mcr.microsoft.com/dotnet/nightly/runtime
ночная версия SDK mcr.microsoft.com/dotnet/nightly/sdk
ночной «Aspire» панели мониторинга mcr.microsoft.com/dotnet/nightly/aspire-dashboard

Репозитории изображений .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

См. также