Краткое руководство. Создание частного реестра контейнеров с помощью 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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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, перейдите к следующим руководствам.