Руководство по Создание реестра контейнеров Azure и отправка образа контейнера

Это вторая часть руководства, состоящего из трех частей. Первая часть руководства по созданию образа контейнера Docker для веб-приложения Node.js. В этом руководстве мы поместим образ в реестр контейнеров Azure. Если вы еще не создали образ контейнера, вернитесь к первой части этой серии — руководству по созданию образа контейнера.

Реестр контейнеров Azure является частным реестром Docker в Azure. В этом учебнике, второй части серии, вы:

  • создадите экземпляр Реестра контейнеров Azure с помощью Azure CLI;
  • добавите образ контейнера для помещения в реестр контейнеров Azure;
  • отправите образ в реестр.

В следующей статье (последнем руководстве в серии) вы развернете контейнер из частного реестра в службе "Экземпляры контейнеров Azure".

Перед началом

Для работы с этим руководством вам потребуются следующие ресурсы:

Azure CLI. Интерфейс командной строки Azure версии 2.0.29 или более поздней, установленный на локальном компьютере. Чтобы узнать версию, выполните команду az --version. Если вам необходимо выполнить установку или обновление, см. статью Установка Azure CLI.

Docker. Для выполнения действий, описанных в этом учебнике, требуется базовое понимание таких основных понятий Docker, как контейнеры и образы контейнеров, а также знание основных команд docker. Ознакомьтесь с общими сведениями о Docker и контейнерах.

Docker. Для работы с этим руководством требуется установить Docker локально. Docker предоставляет пакеты, которые настраивают среду Docker в ОС macOS, Windows и Linux.

Важно!

Так как Azure Cloud Shell не включает управляющую программу Docker, для работы с этим руководством необходимо установить среду разработки Azure CLI и модуль Docker на свой локальный компьютер. В этом руководстве Azure Cloud Shell не используется.

Создание реестра контейнеров Azure

Перед созданием реестра контейнеров необходимо создать группу ресурсов, куда он будет развернут. Группа ресурсов — это логическая коллекция, в которой выполняется развертывание и администрирование всех ресурсов Azure.

Создайте группу ресурсов с помощью команды az group create. В следующем примере создается группа ресурсов с именем myResourceGroup в регионе eastus.

az group create --name myResourceGroup --location eastus

После создания группы ресурсов создайте реестр контейнеров Azure с помощью команды az acr create. Имя реестра контейнеров должно быть уникальным в пределах Azure и содержать от 5 до 50 буквенно-цифровых знаков. Замените <acrName> уникальным именем реестра.

az acr create --resource-group myResourceGroup --name <acrName> --sku Basic

Ниже приведена часть выходных данных для нового реестра контейнеров Azure mycontainerregistry082.

{
  "creationDate": "2020-07-16T21:54:47.297875+00:00",
  "id": "/subscriptions/<Subscription ID>/resourceGroups/myResourceGroup/providers/Microsoft.ContainerRegistry/registries/mycontainerregistry082",
  "location": "eastus",
  "loginServer": "mycontainerregistry082.azurecr.io",
  "name": "mycontainerregistry082",
  "provisioningState": "Succeeded",
  "resourceGroup": "myResourceGroup",
  "sku": {
    "name": "Basic",
    "tier": "Basic"
  },
  "status": null,
  "storageAccount": null,
  "tags": {},
  "type": "Microsoft.ContainerRegistry/registries"
}

В остальной части руководства <acrName> используется как заполнитель для имени реестра контейнеров, выбранного на этом шаге.

Вход в реестр контейнеров

Войдите в экземпляр реестра контейнеров Azure, прежде чем передавать в него образы. Используйте команду az acr login, чтобы выполнить операцию. Укажите уникальное имя реестра контейнеров, выбранное при его создании.

az acr login --name <acrName>

Пример:

az acr login --name mycontainerregistry082

По завершении команда возвращает Login Succeeded.

Login Succeeded

Добавление тега к образу контейнера

Чтобы отправить образ контейнера в частный реестр, например в реестр контейнеров Azure, сначала необходимо добавить для образа тег с полным именем сервера входа в реестр.

Сначала получите полное имя сервера входа в реестр для реестра контейнеров Azure. Выполните следующую команду az acr show и замените <acrName> на имя только что созданного реестра.

az acr show --name <acrName> --query loginServer --output table

Например, если имя реестра — mycontainerregistry082:

az acr show --name mycontainerregistry082 --query loginServer --output table
Result
------------------------
mycontainerregistry082.azurecr.io

Теперь с помощью команды docker images отобразите список локальных образов.

docker images

Вместе с другими образами, присутствующими на компьютере, появится образ aci-tutorial-app, созданный вами при работе с предыдущим руководством.

docker images
REPOSITORY          TAG       IMAGE ID        CREATED           SIZE
aci-tutorial-app    latest    5c745774dfa9    39 minutes ago    68.1 MB

Добавьте к образу aci-tutorial-app тег сервера входа реестра контейнеров. Также добавьте тег :v1 в конец имени образа, чтобы указать номер версии образа. Замените <acrLoginServer> полученным ранее результатом выполненной команды az acr show.

docker tag aci-tutorial-app <acrLoginServer>/aci-tutorial-app:v1

Чтобы проверить операцию присвоения тегов, снова выполните команду docker images.

docker images
REPOSITORY                                            TAG       IMAGE ID        CREATED           SIZE
aci-tutorial-app                                      latest    5c745774dfa9    39 minutes ago    68.1 MB
mycontainerregistry082.azurecr.io/aci-tutorial-app    v1        5c745774dfa9    7 minutes ago     68.1 MB

Передача образа в реестр контейнеров Azure

Теперь, когда вы отметили образ aci-tutorial-app с полным именем сервера входа в частный реестр, его можно отправить в реестр с помощью команды docker push. Замените <acrLoginServer> полным именем сервера входа, полученным на предыдущем шаге.

docker push <acrLoginServer>/aci-tutorial-app:v1

Операция push займет от нескольких секунд до нескольких минут, в зависимости от подключения к Интернету. Ее выходные данные будут иметь следующий вид.

docker push mycontainerregistry082.azurecr.io/aci-tutorial-app:v1
The push refers to a repository [mycontainerregistry082.azurecr.io/aci-tutorial-app]
3db9cac20d49: Pushed
13f653351004: Pushed
4cd158165f4d: Pushed
d8fbd47558a8: Pushed
44ab46125c35: Pushed
5bef08742407: Pushed
v1: digest: sha256:ed67fff971da47175856505585dcd92d1270c3b37543e8afd46014d328f05715 size: 1576

Получение списка образов в реестре контейнеров Azure

Чтобы проверить, находится ли отправлений образ в реестре контейнеров Azure, выведите список образов в реестре с помощью команды az acr repository list. Замените <acrName> именем реестра контейнеров.

az acr repository list --name <acrName> --output table

Пример.

az acr repository list --name mycontainerregistry082 --output table
Result
----------------
aci-tutorial-app

Чтобы увидеть теги для конкретного образа, используйте команду az acr repository show-tags.

az acr repository show-tags --name <acrName> --repository aci-tutorial-app --output table

Вы должны увидеть результат, аналогичный приведенному ниже:

--------
v1

Дальнейшие действия

В этом руководстве вы подготовили реестр контейнеров Azure к использованию со службой "Экземпляры контейнеров Azure", а также передали образ контейнера в реестр. Были выполнены следующие действия:

  • Создание экземпляра Реестра контейнеров Azure с помощью Azure CLI
  • добавление тегов к образу контейнера для помещения в реестр контейнеров Azure;
  • отправка образа в реестр контейнеров Azure.

Перейдите к следующему руководству, чтобы узнать, как развертывать контейнер в Azure с помощью службы "Экземпляры контейнеров Azure".