Краткое руководство. Создание частного реестра контейнеров Docker с помощью Azure PowerShellQuickstart: Create a private container registry using Azure PowerShell

Реестр контейнеров Azure — это управляемая служба частного реестра контейнеров Docker для создания, хранения и обслуживания образов контейнеров Docker.Azure Container Registry is a managed, private Docker container registry service for building, storing, and serving Docker container images. В этом руководстве рассматривается создание реестра контейнеров Azure с помощью PowerShell.In this quickstart, you learn how to create an Azure container registry using PowerShell. Затем используйте команды Docker, чтобы отправить образ контейнера в реестр, после чего извлеките образ из контейнера и запустите его.Then, use Docker commands to push a container image into the registry, and finally pull and run the image from your registry.

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

Примечание

Эта статья была изменена, и теперь в ней содержатся сведения о модуле Az PowerShell для Azure.This article has been updated to use the Azure Az PowerShell module. Модуль Az PowerShell является рекомендуемым модулем PowerShell для взаимодействия с Azure.The Az PowerShell module is the recommended PowerShell module for interacting with Azure. Чтобы начать работу с модулем Az PowerShell, ознакомьтесь со статьей Установка Azure PowerShell.To get started with the Az PowerShell module, see Install Azure PowerShell. Дополнительные сведения см. в статье Перенос Azure PowerShell с AzureRM на Az.To learn how to migrate to the Az PowerShell module, see Migrate Azure PowerShell from AzureRM to Az.

Для работы с этим быстрым началом требуется модуль Azure PowerShell.This quickstart requires Azure PowerShell module. Выполните команду Get-Module -ListAvailable Az, чтобы определить установленную версию.Run Get-Module -ListAvailable Az to determine your installed version. Если вам необходимо выполнить установку или обновление, см. статью об установке модуля Azure PowerShell.If you need to install or upgrade, see Install Azure PowerShell module.

Также необходим локально установленный модуль Docker.You must also have Docker installed locally. Docker предоставляет пакеты для систем под управлением macOS, Windows и Linux.Docker provides packages for macOS, Windows, and Linux systems.

Та как в службе Azure Cloud Shell нет всех необходимых компонентов Docker (управляющая программа dockerd), ее нельзя использовать в этом руководстве.Because the Azure Cloud Shell doesn't include all required Docker components (the dockerd daemon), you can't use the Cloud Shell for this quickstart.

Вход в AzureSign in to Azure

С помощью команды Connect-AzAccount войдите в подписку Azure и следуйте инструкциям на экране.Sign in to your Azure subscription with the Connect-AzAccount command, and follow the on-screen directions.

Connect-AzAccount

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

После аутентификации в Azure создайте группу ресурсов с помощью командлета New-AzResourceGroup.Once you're authenticated with Azure, create a resource group with New-AzResourceGroup. Группа ресурсов — это логический контейнер, в котором происходит развертывание ресурсов Azure и управление ими.A resource group is a logical container in which you deploy and manage your Azure resources.

New-AzResourceGroup -Name myResourceGroup -Location EastUS

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

Теперь создайте реестр контейнеров в новой группе ресурсов с помощью команды New-AzContainerRegistry.Next, create a container registry in your new resource group with the New-AzContainerRegistry command.

Имя реестра должно быть уникальным в пределах Azure и содержать от 5 до 50 буквенно-цифровых символов.The registry name must be unique within Azure, and contain 5-50 alphanumeric characters. В следующем примере создается реестр с именем myContainerRegistry007.The following example creates a registry named "myContainerRegistry007." Замените имя myContainerRegistry007 в следующей команде. Затем с ее помощью создайте реестр.Replace myContainerRegistry007 in the following command, then run it to create the registry:

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

В этом кратком руководстве описано, как создать реестр ценовой категории Базовый. Это оптимальный (недорогой) вариант для разработчиков, которые знакомятся с Реестром контейнеров Azure.In this quickstart you create a Basic registry, which is a cost-optimized option for developers learning about Azure Container Registry. Дополнительные сведения об уровнях служб см. в статье Уровни служб реестра контейнеров.For details on available service tiers, see Container registry service tiers.

Вход в раздел реестраLog in to registry

Перед отправкой и извлечением образов контейнеров необходимо войти в реестр.Before pushing and pulling container images, you must log in to your registry. В рабочих сценариях для доступа к реестру контейнеров следует использовать индивидуальное удостоверение или субъект-службу, но чтобы упростить работу с этим кратким руководством, включите администратора в реестре с помощью команды Get-AzContainerRegistryCredential:In production scenarios you should use an individual identity or service principal for container registry access, but to keep this quickstart brief, enable the admin user on your registry with the Get-AzContainerRegistryCredential command:

$creds = Get-AzContainerRegistryCredential -Registry $registry

Затем выполните команду docker login, чтобы войти в систему:Next, run docker login to log in:

$creds.Password | docker login $registry.LoginServer -u $creds.Username --password-stdin

По завершении команда возвращает Login Succeeded.The command returns Login Succeeded once completed.

Отправка образа в реестрPush image to registry

Чтобы отправить образ в реестр контейнеров Azure, сначала нужно получить этот образ.To push an image to an Azure Container registry, you must first have an image. Если у вас еще нет образов локального контейнера, используйте следующую команду docker pull, чтобы извлечь существующий общедоступный образ.If you don't yet have any local container images, run the following docker pull command to pull an existing public image. Для этого примера извлеките образ hello-world из Реестра контейнеров Майкрософт.For this example, pull the hello-world image from Microsoft Container Registry.

docker pull mcr.microsoft.com/hello-world

Прежде чем отправить образ в реестр, нужно добавить в него тег с полным именем сервера входа для реестра.Before you can push an image to your registry, you must tag it with the fully qualified name of your registry login server. Имя сервера для входа имеет формат <registry-name>.azurecr.io (должно быть в нижнем регистре), например mycontainerregistry.azurecr.io.The login server name is in the format <registry-name>.azurecr.io (must be all lowercase), for example, mycontainerregistry.azurecr.io.

Присвойте образу тег с помощью команды docker tag.Tag the image using the docker tag command. Замените значение <login-server> именем сервера входа для экземпляра ACR.Replace <login-server> with the login server name of your ACR instance.

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

ПримерExample:

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

Наконец, воспользуйтесь командой docker push для принудительной отправки образа в экземпляр реестра.Finally, use docker push to push the image to the registry instance. Замените значение <login-server> именем сервера входа для экземпляра реестра.Replace <login-server> with the login server name of your registry instance. В этом примере создается репозиторий hello-world с образом hello-world:v1.This example creates the hello-world repository, containing the hello-world:v1 image.

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

После передачи образа в реестр контейнеров удалите образ hello-world:v1 из локальной среды Docker.After pushing the image to your container registry, remove the hello-world:v1 image from your local Docker environment. (Обратите внимание, что команда docker rmi не приводит к удалению образа из репозитория hello-world в реестре контейнеров Azure.)(Note that this docker rmi command does not remove the image from the hello-world repository in your Azure container registry.)

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

Запуск образа из реестраRun image from registry

Теперь вы можете извлекать и запускать образ контейнера hello-world:v1 из реестра контейнеров с помощью команды docker run:Now, you can pull and run the hello-world:v1 container image from your container registry by using docker run:

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

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

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.

[...]

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

После завершения работы с ресурсами, созданными в этом кратком руководстве, с помощью команды Remove-AzResourceGroup вы можете удалить группу ресурсов, реестр контейнеров и сохраненные образы контейнеров:Once you're done working with the resources you created in this quickstart, use the Remove-AzResourceGroup command to remove the resource group, the container registry, and the container images stored there:

Remove-AzResourceGroup -Name myResourceGroup

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

С помощью этого краткого руководства вы создали Реестр контейнеров Azure с использованием Azure PowerShell, отправили образ контейнера в него, а затем извлекли этот образ оттуда и запустили его.In this quickstart, you created an Azure Container Registry with Azure PowerShell, pushed a container image, and pulled and ran the image from the registry. Чтобы продолжить работу с Реестром контейнеров Azure, перейдите к следующим руководствам.Continue to the Azure Container Registry tutorials for a deeper look at ACR.