Краткое руководство. Создание закрытого реестра контейнеров с помощью Azure CLI

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

Для этого руководства требуется Azure CLI (рекомендуется версия 2.0.55 и выше). Чтобы узнать версию, выполните команду az --version. Если вам необходимо выполнить установку или обновление, см. статью Установка Azure CLI 2.0.

Также необходим локально установленный модуль Docker. Docker предоставляет пакеты, которые позволяют быстро настроить Docker в системе под управлением macOS, Windows или Linux.

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

Создание группы ресурсов

Создайте группу ресурсов с помощью команды az group create. Группа ресурсов Azure является логическим контейнером, в котором происходит развертывание ресурсов Azure и управление ими.

В следующем примере создается группа ресурсов с именем myResourceGroup в расположении eastus.

az group create --name myResourceGroup --location eastus

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

В этом кратком руководстве описано, как создать реестр ценовой категории Базовый. Это оптимальный (недорогой) вариант для разработчиков, которые знакомятся с Реестром контейнеров Azure. Дополнительные сведения об уровнях служб см. в статье Уровни служб реестра контейнеров.

Создайте экземпляр ACR с помощью команды az acr create. Имя реестра должно быть уникальным в Пределах Azure и содержать 5–50 буквенно-цифровых символов в нижнем регистре. В следующем примере используется mycontainerregistry . Замените его уникальным значением.

az acr create --resource-group myResourceGroup \
  --name mycontainerregistry --sku Basic

При создании реестра выходные данные выглядят так:

{
  "adminUserEnabled": false,
  "creationDate": "2019-01-08T22:32:13.175925+00:00",
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.ContainerRegistry/registries/mycontainerregistry",
  "location": "eastus",
  "loginServer": "mycontainerregistry.azurecr.io",
  "name": "mycontainerregistry",
  "provisioningState": "Succeeded",
  "resourceGroup": "myResourceGroup",
  "sku": {
    "name": "Basic",
    "tier": "Basic"
  },
  "status": null,
  "storageAccount": null,
  "tags": {},
  "type": "Microsoft.ContainerRegistry/registries"
}

Запишите loginServer в выходных данных (в нижнем регистре). Это полное доменное имя реестра. В дальнейшем в этом кратком руководстве будет использоваться <registry-name> как заполнитель имени реестра контейнеров, а <login-server> — как заполнитель имени сервера для входа в реестр.

Совет

В этом кратком руководстве описано, как создать реестр ценовой категории Базовый. Это оптимальный (недорогой) вариант для разработчиков, которые знакомятся с Реестром контейнеров Azure. Выберите другие уровни, чтобы повысить пропускную способность хранилища и образов, а также получить такие возможности, как подключение с использованием частной конечной точки. Дополнительные сведения об уровнях служб (SKU) см. в статье Уровни служб реестра контейнеров.

Вход в раздел реестра

Перед отправкой и извлечением образов контейнеров необходимо войти в реестр. Чтобы сделать это, используйте команду az acr login. При выполнении входа с помощью Azure CLI укажите только имя ресурса реестра. Не используйте при этом полное имя сервера для входа.

az acr login --name <registry-name>

Пример.

az acr login --name mycontainerregistry

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

Отправка образа в реестр

Чтобы отправить образ в реестр контейнеров Azure, сначала нужно получить этот образ. Если у вас еще нет образов локального контейнера, используйте следующую команду docker pull, чтобы извлечь существующий общедоступный образ. Для этого примера извлеките образ hello-world из Реестра контейнеров Майкрософт.

docker pull mcr.microsoft.com/hello-world

Прежде чем отправить образ в реестр, нужно добавить в него тег с полным именем сервера входа для реестра. Имя сервера для входа имеет формат <registry-name>.azurecr.io (должно быть в нижнем регистре), например mycontainerregistry.azurecr.io.

Присвойте образу тег с помощью команды docker tag. Замените значение <login-server> именем сервера входа для экземпляра ACR.

docker tag mcr.microsoft.com/hello-world <login-server>/hello-world:v1

Пример

docker tag mcr.microsoft.com/hello-world mycontainerregistry.azurecr.io/hello-world:v1

Наконец, воспользуйтесь командой docker push для принудительной отправки образа в экземпляр реестра. Замените значение <login-server> именем сервера входа для экземпляра реестра. В этом примере создается репозиторий hello-world с образом hello-world:v1.

docker push <login-server>/hello-world:v1

После передачи образа в реестр контейнеров удалите образ hello-world:v1 из локальной среды Docker. (Обратите внимание, что команда docker rmi не приводит к удалению образа из репозитория hello-world в реестре контейнеров Azure.)

docker rmi <login-server>/hello-world:v1

Список образов контейнеров

В следующем примере перечисляются репозитории в реестре.

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

Выходные данные:

Result
----------------
hello-world

В следующем примере перечисляются теги в репозитории hello-world.

az acr repository show-tags --name <registry-name> --repository hello-world --output table

Выходные данные:

Result
--------
v1

Запуск образа из реестра

Теперь вы можете извлекать и запускать образ контейнера hello-world:v1 из реестра контейнеров с помощью команды docker run.

docker run <login-server>/hello-world:v1  

Выходные данные примера:

Unable to find image 'mycontainerregistry.azurecr.io/hello-world:v1' locally
v1: Pulling from hello-world
Digest: sha256:662dd8e65ef7ccf13f417962c2f77567d3b132f12c95909de6c85ac3c326a345
Status: Downloaded newer image for mycontainerregistry.azurecr.io/hello-world:v1

Hello from Docker!
This message shows that your installation appears to be working correctly.

[...]

Очистка ресурсов

Ненужные группу ресурсов, реестр контейнеров и все образы контейнеров можно удалить с помощью команды az group delete.

az group delete --name myResourceGroup

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

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