Образы контейнеров .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
образ, так как он оптимизирован для размера. Собственные приложения AOT и автономные или отдельные приложения СРЕДЫ CLR, требующие функций глобализации, могут использовать 8.0-jammy-chiseled-extra
.
Изображения Alpine и Mariner используют ту же схему.
Примечание.
Образы Debian и Ubuntu (не чиселированные) runtime-deps
не имеют нескольких вариантов.
Собственные образы контейнеров AOT
Собственные образы AOT публикуются в репозитории sdk и помечены суффиксом -aot
. Эти образы позволяют создавать собственные приложения AOT. Они создаются для дистрибутивов с соответствующими изображениями runtime-deps:*-aot
. Эти изображения являются большими, как правило, в два раза больше обычных образов пакета SDK.
Изображения AOT публикуются для:
- Алпайн
- Моряк
- Ubuntu
Дополнительные сведения см. в статье о развертывании AOT в машинном коде
Репозитории Центра Docker
Все официальные образы Майкрософт для .NET публикуются в организации Microsoft-dotnet Docker Hub. Рассмотрим следующие репозитории.
Репозитории устойчивых образов .NET:
Репозиторий изображений | Изображения |
---|---|
sdk | mcr.microsoft.com/dotnet/sdk |
aspnet | mcr.microsoft.com/dotnet/aspnet |
среда выполнения | mcr.microsoft.com/dotnet/runtime |
среда выполнения-deps | mcr.microsoft.com/dotnet/runtime-deps |
monitor | mcr.microsoft.com/dotnet/monitor |
панель мониторинга aspire | mcr.microsoft.com/dotnet/aspire-dashboard |
примеры | mcr.microsoft.com/dotnet/samples |
Репозитории изображений .NET ночью:
Репозиторий изображений | Изображения |
---|---|
nightly-aspnet | mcr.microsoft.com/dotnet/nightly/aspnet |
ночной монитор | 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 |
ночная панель мониторинга | 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 |