Мастерство развертывания Docker в Azure: Пошаговое руководство

Для этого проекта ATA вы получите представление о том, как работает Docker в Azure. В этом учебнике по Azure Docker вы узнаете о службе Контейнеры Azure (ACI) от Microsoft.

Контейнеры Azure – это размещенный кластер Kubernetes через хостинг Azure Docker. Он позволяет развертывать любое изображение Docker (Windows и Linux) и запускать его в контейнере. Каждый контейнер Docker Azure работает как автономный контейнер, используя свои собственные выделенные CPU и память.

В этом проекте вы узнаете, как развернуть и запустить свой первый Контейнер Azure, основанный на образе контейнера ASP.NET от Microsoft в облачном общедоступном облаке Azure.

К концу этого проекта у вас будет веб-сайт ASP.NET, работающий в контейнере Docker, размещенном службой Azure Container Instance.

Требования к среде и знаниям

Чтобы извлечь максимальную пользу из этого учебника по Azure Docker, у вас должны быть следующие:

  1. A local Windows 10 client with Docker Desktop installed.
  2. A Microsoft Azure account
  3. Доступ к учетной записи Azure с правами на развертывание контейнера в Реестре контейнеров Azure
  4. Установленный Windows Azure CLI. Вы будете учиться с помощью командной строки.
  5. A beginner understanding of containers and Docker.
  6. A registered Docker ID.

Если вам не нравится выбранный пример в этом руководстве по Azure Docker, вы всегда можете использовать другой образ контейнера на Docker Hub.

Без лишних слов, приступим к созданию этого проекта!

Запуск контейнера Docker

Чтобы избежать разочарования, когда что-то не работает, всегда сначала проверьте, работает ли Docker Engine. Для этого откройте командную строку или PowerShell-сессию и выполните команду docker info.

Ниже вы можете увидеть тип вывода, который вы должны получить.

Inspecting information about the local Docker installation

Чтобы проверить, запустите контейнер Docker, выполните команду docker run hello-world. За кулисами команда docker выполняет несколько шагов:

  1. Ищет контейнер с именем hello-word локально на вашем компьютере с Windows 10.
  2. Если не найден, он обращается к общедоступному репозиторию Docker Hub, чтобы найти последнюю версию контейнера с именем hello-world.
  3. Когда контейнер найден, он загружается из репозитория Docker Hub.
  4. После загрузки контейнер запускается и выполняет инструкции для запуска, предоставленные в изображении, используемом контейнером.

Ниже приведен пример вывода.

Download a sample Docker container called hello-world

Запуск примера контейнера ASP.NET

Теперь, когда вы знаете, как скачать и запустить контейнер Docker, скачайте и запустите контейнер, с которым вы будете работать в этом проекте. Этот контейнер Docker – это образ веб-приложения ASP.Net Core.

Чтобы загрузить изображение учебного пособия Docker Azure, выполните следующую команду:

> docker run --name aspnetcore_sample --rm -it -p 8000:80 mcr.microsoft.com/dotnet/core/samples:aspnetapp

Эта команда выполняет следующее:

  1. Поскольку образ Docker недоступен локально, Docker загружает контейнер с именем aspnetapp из другого общедоступного реестра контейнеров, размещенного Microsoft по адресу mcr.microsoft.com в каталоге dotnet/core/samples. Реестр контейнеров mcr.microsoft.com аналогичен общедоступному Docker Hub , но поддерживается Microsoft и содержит только образы контейнеров Microsoft.
  2. Запускает контейнер на вашем локальном компьютере.
  3. (-p 8000:80) – Сопоставляет прослушиваемый TCP-порт 80 на контейнере с TCP-портом 8000. Это позволяет вам получить доступ к веб-приложению по порту 8000 локально.
  4. (-it) – Контейнер будет запущен интерактивно, что означает, что вы сразу попадете в консоль при его запуске.
  5. (—rm) – Когда контейнер остановлен, он будет удален.

Ниже вы можете увидеть ожидаемый вывод.

Downloading a container instance from Microsoft

6. Из вашего браузера подключитесь к работающему приложению контейнера, перейдя по адресу http://localhost:8000. Вы должны увидеть пример веб-приложения ASP.Net

Sample ASP.NET web app

Создание экземпляра реестра контейнеров Azure (ACR)

Как только у вас будет загружен контейнер ASP.NET на ваш компьютер, пришло время перенести его на хостинг Azure Docker с помощью ACI и запустить этот контейнер в Azure. Для этого мы будем загружать демонстрационный контейнер в Azure Container Registry (ACR). ACR – это сервис, который позволяет развертывать и запускать контейнеры Docker непосредственно в Azure.

  1. Войдите в Портал Azure.
  2. Нажмите на значок терминала вверху, чтобы запустить Azure Cloud Shell.
Starting Azure Cloud Shell

3. Убедитесь, что вы выбрали оболочку Bash, как показано ниже.

Bash in Azure Cloud Shell

4. Создайте ресурсную группу Azure, чтобы поместить экземпляр ACR, используя команду az group create ниже.

> az group create --name <RGname> --location <Azure Region of choice>
Creating a resource group

5. Теперь создайте ACR внутри ресурсной группы с помощью команды az acr create. Ниже вы можете увидеть пример создания ACR с базовым SKU с параметром admin-enabled, установленным в true. Он установлен в true, потому что это позволяет вам управлять ресурсами позже.

> az acr create --resource-group <RGname> --name <ACRname> --sku Basic
 --admin-enabled true
Creating an Azure Container Registry

–admin-enabled true

После завершения у вас должен быть экземпляр ACR, работающий внутри вашей ресурсной группы. Хостинг Docker в Azure спасает!

Подключение к локальному экземпляру ACR

  1. Теперь вам нужно перейти из Azure Cloud Shell на ваш локальный компьютер под управлением Windows, чтобы завершить настройку.
  2. На локальной машине запустите PowerShell или командную строку с правами администратора. Я буду использовать PowerShell.
  3. Аутентифицируйтесь в Azure с помощью Azure CLI, запустив команду az login и следуйте инструкциям для предоставления учетных данных.
Authenticating to Azure

После успешной аутентификации вы должны увидеть некоторый JSON-вывод, указывающий на пользователя, с которым вы только что аутентифицировались.

> az acr login --name <ACR-Name> --resource-group <RG Name>
Logging onto ACR

4. Затем аутентифицируйтесь в созданном вами экземпляре ACR в Azure Cloud Shell с помощью команды az acr login, используя следующую команду. Ниже вы можете видеть, что я подключаюсь к экземпляру ACR с именем nopacr1, в ресурсной группе Azure NOPRG.

Обновление тега Docker-образа

  1. Теперь вы готовы отправить свой локальный Docker-образ в ваш экземпляр ACR в Azure Docker hosting или ACI. Но сначала необходимо выполнить зависимость от ACR. Все Docker-образы, загруженные в экземпляр ACR, должны иметь имя экземпляра ACR в имени образа.
Finding the ACR Docker image

Найдите номер ID Docker-образа или имя образа с помощью команды docker images.

> docker tag mcr.microsoft.com/dotnet/core/samples:aspnetapp <ACRName>.azurecr.io/<imagenameofchoice>
Updating the Docker tag

2. Обновите тег Docker-образа для Docker-образа, запустив команду docker tag, как показано ниже. Если вы следуете соглашению об именовании, используйте имя ACR NOPACR1 и определите тег как nopacr1.azurecr.io. Для самого образа используйте имя dotnetsample.

Verifying Docker tag

3. Проверьте, что тег был применен с помощью команды docker images снова. Теперь вы должны увидеть, что тег был обновлен.

  1. Загрузка Docker-образа в экземпляр ACR и проверка
> docker push <ACRName>.azurecr.io/<nameofimage>
Pushing Docker image to ACR

Теперь загрузите локальное изображение на экземпляр ACR, используя команду docker push, как показано ниже, указав метку с именем DNS, где находится экземпляр ACR.

Inspecting ACR instance in Azure portal

2. После загрузки убедитесь, что загрузка на экземпляр ACR прошла успешно, используя портал Azure, перейдя в раздел All Services —> Azure Container Registries и выбрав ранее созданный экземпляр ACR.

Inspecting Docker repo

3. В левом меню раздела Services щелкните Repositories. Здесь должен отобразиться Docker-образ, который вы только что загрузили на свой экземпляр ACR.

Inspecting Docker image

4. Нажмите на изображение, и вы увидите его версию и некоторую другую полезную информацию.

Запуск экземпляра контейнера Azure (ACI)

  1. Теперь вы создали экземпляр ACR, пометили Docker-образ контейнера именем ACR в качестве ссылки и загрузили изображение на экземпляр ACR. Теперь пришло время использовать Azure Container Instance (ACI) для запуска Docker-образа, сохраненного в вашем экземпляре ACR.
Creating a container instance

Продолжая с предыдущего шага, щелкните … рядом с latest и выберите Run instance. Это откроет лезвие Create Container Instance.

  • 2. Заполните поля в блоке Create container instance ниже, используя следующую информацию:
  • Container Name – любое имя, которое вы хотите использовать для этого запущенного контейнера
  • OS type – Linux (Это зависит от исходного контейнера. Если вы используете тот же контейнер в этом проекте, это может быть Windows.)
  • Subscription – ваша подписка Azure
  • Группа ресурсов – любая существующая или новая группа ресурсов Azure, в которую следует добавить экземпляр контейнера

Местоположение – на основе группы ресурсов

Creating a container instance

Для этого учебного пособия по Azure Docker ASP.NET контейнера вы можете оставить все остальные настройки без изменений. В производственной среде в зависимости от того, что выполняется в контейнере, может потребоваться изменение этих настроек.

Successful container instance deployment

3.   Нажмите ОК, чтобы создать экземпляр контейнера.
4.   Как только экземпляр контейнера будет развернут, вы должны увидеть страницу, похожую на приведенный ниже пример.

Inspecting created container instance

5.   Как только развертывание завершится, откройте ACI в портале, перейдя по следующему пути: Все сервисы —> Экземпляры контейнеров. Здесь найдите экземпляр Azure Container Instance (ACI), который только что был создан. Вы должны увидеть отображенный ниже экземпляр.

Sample ASP.NET Core webpage

6.   Скопируйте IP-адрес в правом верхнем углу и вставьте его в веб-браузер. Ваш пример веб-приложения ASP.NET должен загрузиться из вашего экземпляра контейнера Azure (ACI) и отобразить веб-страницу, как показано ниже.

Если вы закончили работу с этим контейнером, вы можете использовать команду az container delete для удаления контейнера.

Заключение

Source:
https://adamtheautomator.com/azure-docker-tutorial/