Введение в .NET и Docker
Приложения .NET Core можно легко выполнять в контейнере Docker. Контейнеры обеспечивают простой способ изоляции приложения от остальной части основной системы, совместного использования ядра и использования ресурсов, которые передаются в это приложение. Если вы не знакомы с Docker, настоятельно рекомендуем ознакомиться с обзорной документацией по Docker.
Дополнительные сведения об установке Docker см. на странице загрузки для версии Docker Desktop: Community Edition.
Основные сведения о Docker
Существует несколько понятий, с которыми вам следует ознакомиться. Клиент Docker содержит CLI для управления образами и контейнерами. Как озвучивалось ранее, вам следует выделить время на ознакомление с Обзорной документацией по Docker.
Изображения
Образ — это упорядоченная коллекция изменений файловой системы, которые формируют основу контейнера. Образ не имеет состояния и доступен только для чтения. Чаще всего образ основан на другом образе, но с определенными модификациями. Например, при создании нового образа для своего приложения вы можете взять за основу существующий образ, который уже содержит среду выполнения .NET Core.
Так как контейнеры создаются на основе образов, образы содержат набор параметров выполнения (например, начальный исполняемый файл), которые выполняются при запуске контейнера.
Контейнеры
Контейнер — исполняемый экземпляр образа. При создании образа происходит развертывание приложения и зависимостей. Затем можно создать несколько изолированных друг от друга контейнеров. Каждый экземпляр контейнера имеет собственную файловую систему, память и сетевой интерфейс.
Реестры
Реестры контейнеров — это коллекции из репозиториев образов. Образ может быть основан на образе из реестра. Контейнеры можно создавать непосредственно из образа в реестре. Связь между контейнерами, образами и реестрами Docker — это важный элемент в разработке архитектуры и создании контейнерных приложений или микрослужб. Этой подход значительно сокращает время между разработкой и развертыванием.
Docker содержит общедоступный реестр, размещенный в Docker Hub. Образы для .NET Core также доступны в Docker Hub.
Реестр контейнеров Майкрософт (MCR) является официальным источником образов контейнеров, предоставленных корпорацией Майкрософт. MCR использует Azure CDN для обеспечения доступа к глобально реплицированным образам. Однако MCR не имеет общедоступного веб-сайта и основной способ узнать об образах контейнеров, предоставленных корпорацией Майкрософт, — через страницу Microsoft Docker Hub.
Dockerfile
Объект Dockerfile — это файл, который определяет набор инструкций, создающих образ. Каждая инструкция в Dockerfile создает слой в образе. В большинстве случаев при пересборке образа модифицируются только слои, которые были изменены. Dockerfile можно передавать другим пользователям, что позволяет им повторно создавать новые образы тем же способом, что и вы. Хотя это позволяет распространять инструкции о том, как создать образ, основным способом распространения образа является его публикация в реестре.
Образы .NET Core
Официальные образы Docker для .NET Core публикуются в реестре контейнеров Microsoft (MCR) и доступ к ним можно получить в репозитории Microsoft .NET Core Docker Hub. Каждый репозиторий содержит рабочие образы для разных сочетаний .NET (пакета SDK или среды выполнения) и операционной системы.
Корпорация Майкрософт предоставляет образы, которые предназначены для конкретных сценариев. Например репозиторий ASP.NET Core содержит образы, которые предназначены для запуска приложений ASP.NET Core в рабочей среде.
Службы Azure
Контейнеры поддерживаются различными службами Azure. Создать образ Docker для приложения и развернуть его можно в одной из следующих служб:
Служба Azure Kubernetes (AKS)
Масштабирование и оркестрация контейнеров Windows & Linux с помощью Kubernetes.служба приложений Azure;
Развертывание веб-приложений или API с помощью контейнеров в среде PaaS.Приложения-контейнеры Azure
Выполняйте рабочие нагрузки контейнеров без управления серверами, оркестрацией или инфраструктурой и используйте встроенную поддержку Dapr и KEDA для обеспечения наблюдаемости и масштабирования до нуля.Экземпляры контейнеров Azure;
Создание отдельных контейнеров в облаке без служб управления более высокого уровня.Пакетная служба Azure
Выполнение повторяющихся вычислительных заданий с помощью контейнеров.Azure Service Fabric
Перенос, переключение и модернизация приложений .NET в микрослужбах с помощью контейнеров Windows & Linux.Реестр контейнеров Azure
Хранит образы контейнеров с любыми типами развертывания Azure и управляет ими.