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