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

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

Предварительные требования

Примечание

Для взаимодействия с Azure рекомендуется использовать модуль Azure Az PowerShell. Чтобы начать работу, см. статью Установка Azure PowerShell. Дополнительные сведения см. в статье Перенос Azure PowerShell с AzureRM на Az.

Для работы с этим быстрым началом требуется модуль Azure PowerShell. Выполните команду Get-Module -ListAvailable Az, чтобы определить установленную версию. Если вам необходимо выполнить установку или обновление, см. статью об установке модуля Azure PowerShell.

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

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

Вход в Azure

С помощью команды Connect-AzAccount войдите в подписку Azure и следуйте инструкциям на экране.

Connect-AzAccount

Создать группу ресурсов

После аутентификации в Azure создайте группу ресурсов с помощью командлета New-AzResourceGroup. Группа ресурсов —это логический контейнер, в котором происходит развертывание ресурсов Azure и управление ими.

New-AzResourceGroup -Name myResourceGroup -Location EastUS

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

Теперь создайте реестр контейнеров в новой группе ресурсов с помощью команды New-AzContainerRegistry.

Имя реестра должно быть уникальным в пределах Azure и содержать от 5 до 50 буквенно-цифровых символов. В следующем примере создается реестр с именем mycontainerregistry. Замените mycontainerregistry в следующей команде, а затем запустите ее, чтобы создать реестр:

$registry = New-AzContainerRegistry -ResourceGroupName "myResourceGroup" -Name "mycontainerregistry" -EnableAdminUser -Sku Basic

Совет

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

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

Перед отправкой и извлечением образов контейнеров необходимо войти в реестр с помощью командлета Connect-AzContainerRegistry. В следующем примере используются те же учетные данные, которые вы использовали при проверке подлинности в Azure с помощью командлета Connect-AzAccount.

Примечание

В этом примере значение $registry.Name — это имя ресурса, а не полное имя реестра.

Connect-AzContainerRegistry -Name $registry.Name

По завершении команда возвращает 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

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

Теперь вы можете извлекать и запускать образ контейнера 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.

[...]

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

После завершения работы с ресурсами, созданными в этом кратком руководстве, с помощью команды Remove-AzResourceGroup вы можете удалить группу ресурсов, реестр контейнеров и сохраненные образы контейнеров:

Remove-AzResourceGroup -Name myResourceGroup

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

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