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


Официальные .NET-образы Docker

Совет

Это содержимое является фрагментом из электронной книги, архитектуры микрослужб .NET для контейнерных приложений .NET, доступных в документации .NET или в виде бесплатного скачиваемого PDF-файла, который можно читать в автономном режиме.

Архитектура микрослужб .NET для контейнерных приложений .NET для эскиза обложки.

Официальные .NET-образы Docker — это образы Docker, оптимизированные Майкрософт. Они общедоступны на Реестр артефактов Microsoft. Вы можете выполнить поиск по каталогу, чтобы найти все репозитории образов .NET, например репозиторий пакета SDK для .NET.

Каждый репозиторий может содержать несколько образов в зависимости от версий .NET и в зависимости от ОС и версий (Linux Debian, Linux Alpine, Windows Nano Server, Windows Server Core и т. д.). Репозитории образов предоставляют обширные теги, чтобы помочь вам выбрать не только определенную версию платформы, но и выбрать ОС (дистрибутив Linux или версию Windows).

Оптимизация образов .NET и Docker для разработки и рабочей среды

При создании образов Docker для разработчиков Майкрософт сосредотачивается на следующих основных сценариях:

  • образы, используемые для разработки и сборки приложений .NET;

  • образы, используемые для запуска приложений .NET.

Зачем использовать несколько образов? При разработке, сборке и выполнении приложений в контейнерах приоритеты будут разными. Предоставляя различные образы для каждой из задач, Майкрософт помогает оптимизировать отдельные процессы разработки, сборки и развертывания приложений.

Во время разработки и сборки

Во время разработки важна скорость выполнения итераций для изменений и возможность отлаживать изменения. Размер образа не так важен, как возможность быстро вносить изменения в код и просматривать их. Некоторые средства и контейнеры агента сборки используют образ .NET для разработки (mcr.microsoft.com/dotnet/sdk:8.0) во время разработки и сборки. При сборке внутри контейнера Docker надо учитывать, какие элементы необходимы для компиляции приложения. Сюда входят зависимости компилятора и другие зависимости .NET.

Еще одним отличным вариантом является контейнеры разработки. Эти контейнеры являются предварительно созданными средами разработки, которые готовы к использованию. Вам не нужно беспокоиться о зависимостях и конфигурациях. Они также легко настраиваются для включения дополнительных инструментов или зависимостей. Контейнеры разработки предоставляют согласованную и воспроизводимую настройку, которую легко поделиться с командой. Контейнеры разработки соответствуют спецификации контейнера разработки, и многие популярные средства разработчика, в том числе Visual Studio Code и GitHub Codespaces, поддерживают их. Контейнеры разработки .NET основаны на образе пакета SDK для .NET и включают пакет SDK для .NET, среду выполнения и другие средства, необходимые для разработки приложений .NET.

Почему так важен этот тип образа сборки? Этот образ не развертывается в рабочую среду. Это образ, который вы используете для сборки содержимого, помещаемого в рабочий образ. Если вы используете многоэтапную сборку Docker, этот образ будет применяться в среде непрерывной интеграции (CI) или в среде сборки.

Производство

При производстве важно быстро развернуть и запустить контейнеры на основе рабочего образа .NET. Таким образом, образ среды выполнения, основанный на mcr.microsoft.com/dotnet/aspnet:8.0 , мал, чтобы он смог быстро перемещаться по сети из реестра Docker на узлы Docker. Содержимое готово к запуску, поэтому период времени от запуска контейнера до обработки результатов минимален. В модели Docker не требуется компиляция из кода C#, так как при запуске dotnet build или dotnet publish при использовании контейнера сборки сборки не требуется.

В этот оптимизированный образ вы помещаете только двоичные файлы и другое содержимое, необходимое для выполнения приложения. Например, в содержимое, создаваемое командой dotnet publish, входят только скомпилированные двоичные файлы .NET, образы, файлы .js и .css. Со временем вы увидите изображения, содержащие предварительно отложенные (компиляция из IL в собственные пакеты, возникающие во время выполнения).

Хотя существует несколько версий образов .NET и ASP.NET Core, они все имеют один или несколько общих уровней, включая базовый уровень. Поэтому образ занимает мало места на диске, ведь он содержит лишь различия между вашим образом и базовым образом. Результатом является то, что это быстро, чтобы извлечь образ из реестра.

При изучении репозиториев образов .NET на Реестр артефактов Microsoft вы найдете несколько версий образов, классифицированных или помеченных тегами. Эти теги помогают определить, какую версию использовать, как показано в таблице:

Изображения Комментарии
mcr.microsoft.com/dotnet/aspnet:8.0 ASP.NET Core только со средой выполнения и оптимизацией ASP.NET Core в Linux и Windows (для разных архитектур)
mcr.microsoft.com/dotnet/sdk:8.0 .NET 8 с пакетами SDK, включенными в Linux и Windows (с несколькими арками)

Вы можете найти все доступные образы docker в dotnet-docker, а также обратиться к последним предварительным версиям, используя ночную сборку mcr.microsoft.com/dotnet/nightly/*.