Импорт образов контейнеров в реестр контейнеровImport container images to a container registry

Образы контейнеров можно легко импортировать (копировать) в Реестр контейнеров Azure, не используя команды Docker.You can easily import (copy) container images to an Azure container registry, without using Docker commands. Например, импортируйте образы из реестра разработки в реестр рабочей среды или скопируйте базовые образы из общедоступного реестра.For example, import images from a development registry to a production registry, or copy base images from a public registry.

Реестр контейнеров Azure обрабатывает ряд распространенных сценариев для копирования образов из имеющегося реестра:Azure Container Registry handles a number of common scenarios to copy images from an existing registry:

  • Импорт из общедоступного реестраImport from a public registry

  • Импорт из другого реестра контейнеров Azure в той же или другой подписке или клиенте AzureImport from another Azure container registry, in the same or a different Azure subscription or tenant

  • Импорт из закрытого реестра контейнеров, не относящегося к AzureImport from a non-Azure private container registry

Импорт образов в Реестр контейнеров Azure имеет следующие преимущества по сравнению с использованием команд CLI Docker:Image import into an Azure container registry has the following benefits over using Docker CLI commands:

  • Так как в клиентской среде не требуется локальная установка DOCKER, импортируйте любой образ контейнера независимо от поддерживаемого типа ОС.Because your client environment doesn't need a local Docker installation, import any container image, regardless of the supported OS type.

  • При импорте образов с несколькими архитектурами (например, официальные образы Docker) копируются образы для всех архитектур и платформ, указанных в списке манифеста.When you import multi-architecture images (such as official Docker images), images for all architectures and platforms specified in the manifest list get copied.

  • Доступ к целевому реестру не обязательно должен использовать общедоступную конечную точку реестра.Access to the target registry doesn't have to use the registry's public endpoint.

Чтобы импортировать образы контейнеров при работе с этой статьей, требуется запустить Azure CLI в Azure Cloud Shell или локально (рекомендуется версия 2.0.55 или более поздняя).To import container images, this article requires that you run the Azure CLI in Azure Cloud Shell or locally (version 2.0.55 or later recommended). Чтобы узнать версию, выполните команду az --version.Run az --version to find the version. Если вам необходимо выполнить установку или обновление, см. статью Установка Azure CLI 2.0.If you need to install or upgrade, see Install Azure CLI.

Примечание

Если нужно распространить идентичные образы контейнеров в нескольких регионах Azure, Реестр контейнеров Azure также поддерживает георепликацию.If you need to distribute identical container images across multiple Azure regions, Azure Container Registry also supports geo-replication. При георепликации реестра (требуется уровень служб Premium) можно обслуживать несколько регионов с одинаковыми именами образов и тегов из одного реестра.By geo-replicating a registry (Premium service tier required), you can serve multiple regions with identical image and tag names from a single registry.

Важно!

Изменения в импорте изображений между двумя реестрами контейнеров Azure были введены по состоянию на Январь 2021:Changes to image import between two Azure container registries have been introduced as of January 2021:

  • Для импорта в реестр контейнеров Azure с ограниченным доступом к сети или из него требуется наличие ограниченного реестра, разрешающего доступ доверенных служб для обхода сети.Import to or from a network-restricted Azure container registry requires the restricted registry to allow access by trusted services to bypass the network. По умолчанию этот параметр включен, что позволяет импортировать.By default, the setting is enabled, allowing import. Если параметр не включен во вновь созданном реестре с частной конечной точкой или с правилами брандмауэра в реестре, импорт завершится ошибкой.If the setting isn't enabled in a newly created registry with a private endpoint or with registry firewall rules, import will fail.
  • В существующем ограниченном сетью реестре контейнеров Azure, который используется в качестве источника или целевого объекта импорта, включение этой функции сетевой безопасности является необязательным, но рекомендуется.In an existing network-restricted Azure container registry that is used as an import source or target, enabling this network security feature is optional but recommended.

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

Если у вас еще нет Реестра контейнеров Azure, создайте его.If you don't already have an Azure container registry, create a registry. Инструкции см. в разделе Краткое руководство. создание закрытого реестра контейнеров с помощью Azure CLI.For steps, see Quickstart: Create a private container registry using the Azure CLI.

Чтобы импортировать образ в реестр контейнеров Azure, удостоверение должно иметь разрешения на запись в целевой реестр (по крайней мере роль участника или пользовательскую роль, которая разрешает действие Импортимаже).To import an image to an Azure container registry, your identity must have write permissions to the target registry (at least Contributor role, or a custom role that allows the importImage action). Ознакомьтесь со статьей Роли и разрешения реестра контейнеров Azure.See Azure Container Registry roles and permissions.

Импорт из общедоступного реестраImport from a public registry

Импорт из центра DockerImport from Docker Hub

Например, используйте команду az acr import, чтобы импортировать образ hello-world:latest с несколькими архитектурами из центра Docker в реестр с именем myregistry.For example, use the az acr import command to import the multi-architecture hello-world:latest image from Docker Hub to a registry named myregistry. Так как hello-world — это официальный образ из центра Docker, этот образ находится в используемом по умолчанию репозитории library.Because hello-world is an official image from Docker Hub, this image is in the default library repository. Добавьте в значение параметра образа --source имя репозитория и при необходимости тег.Include the repository name and optionally a tag in the value of the --source image parameter. (Вы можете дополнительно определить образ по его хэш-коду манифеста, а не по тегу, который гарантирует определенную версию образа.)(You can optionally identify an image by its manifest digest instead of by tag, which guarantees a particular version of an image.)

az acr import \
  --name myregistry \
  --source docker.io/library/hello-world:latest \
  --image hello-world:latest

Вы можете проверить, что несколько манифестов связаны с этим изображением, выполнив команду az acr repository show-manifests:You can verify that multiple manifests are associated with this image by running the az acr repository show-manifests command:

az acr repository show-manifests \
  --name myregistry \
  --repository hello-world

Если у вас есть учетная запись центра DOCKER, рекомендуется использовать учетные данные при импорте образа из DOCKER Hub.If you have a Docker Hub account, we recommend that you use the credentials when importing an image from Docker Hub. Передайте имя пользователя центра DOCKER, пароль или личный маркер доступа в качестве параметров в az acr import .Pass the Docker Hub user name and the password or a personal access token as parameters to az acr import. В следующем примере показан импорт общедоступного образа из tensorflow репозитория в DOCKER Hub с использованием учетных данных DOCKER Hub:The following example imports a public image from the tensorflow repository in Docker Hub, using Docker Hub credentials:

az acr import \
  --name myregistry \
  --source docker.io/tensorflow/tensorflow:latest-gpu \
  --image tensorflow:latest-gpu
  --username <Docker Hub user name>
  --password <Docker Hub token>

Импорт из Реестра контейнеров МайкрософтImport from Microsoft Container Registry

Например, импортируйте ltsc2019 образ Windows Server Core из windows репозитория в реестре контейнеров Microsoft.For example, import the ltsc2019 Windows Server Core image from the windows repository in Microsoft Container Registry.

az acr import \
--name myregistry \
--source mcr.microsoft.com/windows/servercore:ltsc2019 \
--image servercore:ltsc2019

Импорт из реестра контейнеров Azure в том же клиенте ADImport from an Azure container registry in the same AD tenant

Вы можете импортировать образ из реестра контейнеров Azure в том же клиенте AD, используя разрешения интегрированной Azure Active Directory.You can import an image from an Azure container registry in the same AD tenant using integrated Azure Active Directory permissions.

  • Удостоверение должно иметь Azure Active Directory разрешения на чтение из исходного реестра (роль читателя) и импорт в целевой реестр (роль участника или пользовательскую роль , которая разрешает действие импортимаже).Your identity must have Azure Active Directory permissions to read from the source registry (Reader role) and to import to the target registry (Contributor role, or a custom role that allows the importImage action).

  • Реестр может находиться в той же или другой подписке Azure в одном клиенте Active Directory.The registry can be in the same or a different Azure subscription in the same Active Directory tenant.

  • Общий доступ к исходному реестру может быть отключен.Public access to the source registry may be disabled. Если общий доступ отключен, укажите исходный реестр по ИДЕНТИФИКАТОРу ресурса, а не по имени сервера входа в реестр.If public access is disabled, specify the source registry by resource ID instead of by registry login server name.

  • Если к исходному реестру и (или) целевому реестру применены правила брандмауэра частной конечной точки или реестра, убедитесь, что ограниченный реестр разрешает доверенным службам доступ к сети.If the source registry and/or the target registry has a private endpoint or registry firewall rules are applied, ensure that the restricted registry allows trusted services to access the network.

Импорт из реестра в одной и той же подпискеImport from a registry in the same subscription

Например, импортируйте образ aci-helloworld:latest из исходного реестра mysourceregistry в myregistry в той же подписке Azure.For example, import the aci-helloworld:latest image from a source registry mysourceregistry to myregistry in the same Azure subscription.

az acr import \
  --name myregistry \
  --source mysourceregistry.azurecr.io/aci-helloworld:latest \
  --image aci-helloworld:latest

В следующем примере показано, как импортировать aci-helloworld:latest образ в myregistry из исходного реестра мисаурцерегистри , в котором доступ к общедоступной конечной точке реестра отключен.The following example imports the aci-helloworld:latest image to myregistry from a source registry mysourceregistry in which access to the registry's public endpoint is disabled. Укажите идентификатор ресурса исходного реестра с параметром --registry.Supply the resource ID of the source registry with the --registry parameter. Обратите внимание, что --source параметр указывает только исходный репозиторий и тег, а не имя сервера входа в реестр.Notice that the --source parameter specifies only the source repository and tag, not the registry login server name.

az acr import \
  --name myregistry \
  --source aci-helloworld:latest \
  --image aci-helloworld:latest \
  --registry /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sourceResourceGroup/providers/Microsoft.ContainerRegistry/registries/mysourceregistry

В следующем примере выполняется импорт образа по хэш-коду манифеста (хэш-код SHA-256, представленный в виде sha256:...), а не по тегу:The following example imports an image by manifest digest (SHA-256 hash, represented as sha256:...) instead of by tag:

az acr import \
  --name myregistry \
  --source mysourceregistry.azurecr.io/aci-helloworld@sha256:123456abcdefg 

Импорт из реестра в другой подпискеImport from a registry in a different subscription

В следующем примере mysourceregistry находится в другой подписке, нежели myregistry, и в одном и том же клиенте Active Directory.In the following example, mysourceregistry is in a different subscription from myregistry in the same Active Directory tenant. Укажите идентификатор ресурса исходного реестра с параметром --registry.Supply the resource ID of the source registry with the --registry parameter. Обратите внимание, что --source параметр указывает только исходный репозиторий и тег, а не имя сервера входа в реестр.Notice that the --source parameter specifies only the source repository and tag, not the registry login server name.

az acr import \
  --name myregistry \
  --source samples/aci-helloworld:latest \
  --image aci-hello-world:latest \
  --registry /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sourceResourceGroup/providers/Microsoft.ContainerRegistry/registries/mysourceregistry

Импорт из реестра с использованием учетных данных субъекта-службыImport from a registry using service principal credentials

Для импорта из реестра, к которому нельзя получить доступ с помощью встроенных разрешений Active Directory, можно использовать учетные данные субъекта-службы (если они доступны) в исходном реестре.To import from a registry that you can't access using integrated Active Directory permissions, you can use service principal credentials (if available) to the source registry. Укажите идентификатор приложения и пароль субъекта-службы Active Directory с разрешениями на доступ ACRPull к исходному реестру.Supply the appID and password of an Active Directory service principal that has ACRPull access to the source registry. Субъект-службу можно использовать для систем сборки и других автоматических систем, чтобы импортировать образы в ваш реестр.Using a service principal is useful for build systems and other unattended systems that need to import images to your registry.

az acr import \
  --name myregistry \
  --source sourceregistry.azurecr.io/sourcerrepo:tag \
  --image targetimage:tag \
  --username <SP_App_ID> \
  --password <SP_Passwd>

Импорт из реестра контейнеров Azure в другом клиенте ADImport from an Azure container registry in a different AD tenant

Чтобы выполнить импорт из реестра контейнеров Azure в другом клиенте Azure Active Directory, укажите имя сервера входа в исходном реестре и укажите учетные данные пользователя и пароль, которые позволяют получить доступ к реестру по запросу.To import from an Azure container registry in a different Azure Active Directory tenant, specify the source registry by login server name, and provide username and password credentials that enable pull access to the registry. Например, используйте маркер и пароль в области репозитория , а также AppID и пароль субъекта-службы Active Directory, акрпулл доступ к исходному реестру.For example, use a repository-scoped token and password, or the appID and password of an Active Directory service principal that has ACRPull access to the source registry.

az acr import \
  --name myregistry \
  --source sourceregistry.azurecr.io/sourcerrepo:tag \
  --image targetimage:tag \
  --username <SP_App_ID> \
  --password <SP_Passwd>

Импорт из закрытого реестра контейнеров, не относящегося к AzureImport from a non-Azure private container registry

Импортируйте образ из частного реестра, не относящегося к Azure, указав учетные данные, которые позволяют получить доступ к реестру по запросу.Import an image from a non-Azure private registry by specifying credentials that enable pull access to the registry. Например, извлеките образ из частного реестра Docker:For example, pull an image from a private Docker registry:

az acr import \
  --name myregistry \
  --source docker.io/sourcerepo/sourceimage:tag \
  --image sourceimage:tag \
  --username <username> \
  --password <password>

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

В этой статье вы узнали об импорте образов контейнеров в Реестр контейнеров Azure из общедоступного реестра или другого частного реестра.In this article, you learned about importing container images to an Azure container registry from a public registry or another private registry. Сведения о дополнительных вариантах импорта см. в справочнике по командам az acr import.For additional image import options, see the az acr import command reference.