Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Контейнеры являются одним из самых популярных способов развертывания и размещения облачных приложений, с такими инструментами, как Docker, Kubernetesи Podman. Многие разработчики выбирают контейнеры, так как просто упаковать приложение со своими зависимостями и получить это приложение для надежного запуска на любом узле контейнера. Поддержка использования .NET с контейнерамиявляется обширной для
Docker предоставляет отличный обзор контейнеров. Docker Desktop: Community Edition является хорошим инструментом для использования контейнеров на классическом компьютере разработчика.
Образы .NET
Официальные образы контейнеров .NET публикуются в Реестра артефактов Майкрософт и доступны для обнаружения в Docker Hub. Существуют образы среды выполнения для рабочих и образов ПАКЕТА SDK для создания кода для Linux (Alpine, Debian, Ubuntu, Mariner) и Windows. Дополнительные сведения см. в , образах контейнеров .NET.
Образы .NET регулярно обновляются при публикации нового исправления .NET или при обновлении базового образа операционной системы.
Изображения chiselled контейнеров — это изображения контейнеров Ubuntu с минимальным набором компонентов, необходимых для исполняющей среды .NET. Эти образы меньше 100 МБ, чем обычные образы Ubuntu и имеют меньше CVEs, так как они имеют меньше компонентов. В частности, они не содержат оболочку или диспетчер пакетов, что значительно улучшает их профиль безопасности. Кроме того, они включают некорневого пользователя и настроены с включением этого пользователя.
Создание образов контейнеров
Вы можете создать образ контейнера с помощью Dockerfile или использовать пакет SDK для .NET для создания образа. Для примеров по созданию образов см. dotnet/dotnet-docker и dotnet/sdk-container-builds.
В следующем примере показано создание и запуск образа контейнера в нескольких быстрых шагах (поддерживается .NET 8 и .NET 7.0.300).
$ dotnet new webapp -o webapp
$ cd webapp/
$ dotnet publish -t:PublishContainer
MSBuild version 17.8.3+195e7f5a3 for .NET
Determining projects to restore...
All projects are up-to-date for restore.
webapp -> /home/rich/webapp/bin/Release/net8.0/webapp.dll
webapp -> /home/rich/webapp/bin/Release/net8.0/publish/
Building image 'webapp' with tags 'latest' on top of base image 'mcr.microsoft.com/dotnet/aspnet:8.0'.
Pushed image 'webapp:latest' to local registry via 'docker'.
$ docker run --rm -d -p 8000:8080 webapp
7c7ad33409e52ddd3a9d330902acdd49845ca4575e39a6494952b642e584016e
$ curl -s http://localhost:8000 | grep ASP.NET
<p>Learn about <a href="https://learn.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7c7ad33409e5 webapp "dotnet webapp.dll" About a minute ago Up About a minute 0.0.0.0:8000->8080/tcp, :::8000->8080/tcp jovial_shtern
$ docker kill 7c7ad33409e5
docker init — это новый вариант для разработчиков, желающих использовать Dockerfiles.
Порты
сопоставление портов — ключевая часть использования контейнеров. Порты должны быть опубликованы вне контейнера, чтобы реагировать на внешние веб-запросы. ASP.NET образы контейнеров Core изменены в .NET 8 для прослушивания портов 8080по умолчанию. .NET 6 и 7 прослушивают порт 80.
В предыдущем примере с docker runпорт узла 8000 сопоставляется с портом контейнера 8080. Kubernetes работает аналогичным образом.
Переменные среды ASPNETCORE_HTTP_PORTS, ASPNETCORE_HTTPS_PORTSи ASPNETCORE_URLS можно использовать для настройки этого поведения.
Пользователи
Начиная с .NET 8, все изображения включают не корневого пользователя с именем app. По умолчанию чёсанные изображения настроены с включённым пользователем. Функция публикации приложения как контейнера .NET (показанная в разделе Сборка образов контейнеров) также настраивает образы с активированным пользователем по умолчанию. Во всех остальных сценариях учётную запись app можно настроить вручную, например, используя инструкцию USERDockerfile. Если образ настроен с app, и команды должны выполняться как root, тогда можно использовать инструкцию USER, чтобы установить пользователя на root.
Оставаясь в курсе
Новости, связанные с контейнерами, публикуются в обсуждениях dotnet/dotnet-docker и в категории блога .NET "контейнеры".
Службы 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.