Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Образы контейнеров можно легко импортировать (копировать) в Реестр контейнеров Azure, не используя команды Docker. Например, импортируйте образы из реестра разработки в реестр рабочей среды или скопируйте базовые образы из общедоступного реестра.
Реестр контейнеров Azure обрабатывает множество распространенных сценариев для копирования образов и других артефактов из существующего реестра:
Импорт образов из общедоступного реестра
Импорт изображений или артефактов OCI, включая диаграммы Helm 3 из другого реестра контейнеров Azure, в том же или другой подписке Или клиенте Azure.
Импорт из закрытого реестра контейнеров, не относящегося к Azure
Импорт образов в Реестр контейнеров Azure имеет следующие преимущества по сравнению с использованием команд CLI Docker:
Если в клиентской среде не требуется локальная установка Docker, можно импортировать любой образ контейнера независимо от поддерживаемого типа ОС.
При импорте образов с несколькими архитектурами (например, официальных образов Docker) образы для всех архитектур и платформ, указанных в списке манифестов, копируются.
Если у вас есть доступ к целевому реестру, не требуется общедоступная конечная точка реестра.
Внимание
- Для импорта образов требуется поддержка внешнего реестра RFC 7233. Рекомендуется использовать реестр, поддерживающий диапазоны RFC 7233 при использовании команды az acr import с URI реестра, чтобы избежать сбоев.
Ограничения
- Максимальное число манифестов для импортированного изображения — 50.
Чтобы импортировать образы контейнеров при работе с этой статьей, требуется запустить Azure CLI в Azure Cloud Shell или локально (рекомендуется версия 2.0.55 или более поздняя). Чтобы узнать версию, выполните команду az --version. Если вам нужно установить или обновить, см. статью "Установка Azure CLI".
Примечание.
Если вам нужно распространять одинаковые образы контейнеров в нескольких регионах Azure, реестр контейнеров Azure также поддерживает георепликацию. Путем георепликации реестра (требуется уровень служб "Премиум") можно обслуживать несколько регионов с одинаковыми именами образов и тегов из одного реестра.
Внимание
Изменения в импорте образов между двумя реестрами контейнеров Azure были введены с января 2021 года:
- Для импорта в реестр контейнеров Azure с ограниченным доступом к сети или из нее требуется ограниченный реестр, чтобы разрешить доступ доверенным службам для обхода сети. По умолчанию этот параметр включен, разрешая импорт. Если этот параметр не включен во вновь созданном реестре с частной конечной точкой или с правилами брандмауэра реестра, импорт завершится ошибкой.
- В существующем реестре контейнеров Azure с ограничением сети, который используется в качестве источника или целевого объекта импорта, включение этой функции сетевой безопасности является необязательным, но рекомендуется.
Необходимые компоненты
Если у вас еще нет Реестра контейнеров Azure, создайте его. Инструкции см. в кратком руководстве по созданию частного реестра контейнеров с помощью Azure CLI.
Чтобы импортировать образ в реестр контейнеров Azure, ваша учетная запись должна иметь разрешения на выполнение импорта в целевом реестре (Container Registry Data Importer and Data Reader роль). См. Обзор разрешений и ролей Entra реестра контейнеров Azure.
Импорт из общедоступного реестра
Внимание
Для импорта из общедоступного реестра в реестр контейнеров Azure с ограниченным доступом к сети требуется ограниченный реестр, чтобы разрешить доступ доверенным службам для обхода сети. По умолчанию параметр включен, разрешающий импорт. Если этот параметр не включен во вновь созданном реестре с частной конечной точкой или с правилами брандмауэра реестра, импорт завершится ошибкой.
Импорт из центра Docker
Например, используйте команду az acr import для импорта образа с несколькими архитектурами hello-world:latest из Docker Hub в реестр с именем myregistry. Так как hello-world — это официальный образ из центра Docker, этот образ находится в используемом по умолчанию репозитории library. Добавьте в значение параметра образа --source имя репозитория и при необходимости тег. (Вы можете дополнительно определить образ по его хэш-коду манифеста, а не по тегу, который гарантирует определенную версию образа.)
az acr import \
--name myregistry \
--source docker.io/library/hello-world:latest \
--image hello-world:latest
Вы можете убедиться, что несколько манифестов связаны с этим изображением, выполнив команду az acr manifest list-metadata :
az acr manifest list-metadata \
--name hello-world \
--registry myregistry
Чтобы импортировать артефакт по дайджесту без добавления тега:
az acr import \
--name myregistry \
--source docker.io/library/hello-world@sha256:abc123 \
--repository hello-world
Если у вас есть учетная запись Docker Hub, рекомендуется использовать учетные данные при импорте образа из Docker Hub. Передайте имя пользователя Docker Hub и пароль или личный токен доступа в качестве параметров az acr import. В следующем примере выполняется импорт общедоступного образа из репозитория tensorflow в Docker Hub с помощью учетных данных Docker Hub:
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>
Импорт из Реестра контейнеров Майкрософт
Например, импортируйте образ Windows Server Core ltsc2019 из репозитория windows в Microsoft Container Registry.
az acr import \
--name myregistry \
--source mcr.microsoft.com/windows/servercore:ltsc2019 \
--image servercore:ltsc2019
Импорт из реестра контейнеров Azure в том же клиенте AD
Образ можно импортировать из реестра контейнеров Azure в том же клиенте AD с помощью интегрированных разрешений Microsoft Entra.
Учетная запись должна иметь разрешения на просмотр и получение изображений, тегов и OCI-ссылок из исходного реестра (
Container Registry Data Importer and Data Readerроль, назначенная в исходном реестре).Ваша учетная запись также должна иметь разрешения на чтение образов и инициирование импорта в целевом реестре (
Container Registry Data Importer and Data Readerроль, назначенная в целевом реестре).Реестр может находиться в той же или другой подписке Azure в одном клиенте Active Directory.
Общедоступный доступ к исходному реестру отключен. Если общий доступ отключен, укажите исходный реестр по идентификатору ресурса, а не по имени сервера входа в реестр.
Исходный реестр и /или целевой реестр с частной конечной точкой или правилами брандмауэра реестра должен гарантировать, что ограниченный реестр разрешает доверенным службам доступ к сети.
Импорт из реестра в одной и той же подписке
Например, импортируйте aci-helloworld:latest изображение из исходного реестра mysourceregistry в myregistry в той же подписке Azure.
В следующем примере образ импортируется aci-helloworld:latest в myregistry из исходного реестра mysourceregistry, где доступ к публичной конечной точке реестра отключен. Укажите идентификатор ресурса исходного реестра с параметром --registry. Обратите внимание, что параметр --source указывает только исходный репозиторий и тег, а не имя сервера входа в реестр.
Обратите внимание, что флаг --registry <source-registry-resource-id> необходим для аутентификации Entra в исходном реестре.
az acr import \
--name myregistry \
--source aci-helloworld:latest \
--image aci-helloworld:latest \
--registry /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/sourceResourceGroup/providers/Microsoft.ContainerRegistry/registries/mysourceregistry
Импорт из реестра в другой подписке
Примечание.
Чтобы импортировать образ из одного реестра в другой, исходные и целевые реестры должны гарантировать, что оба региона зарегистрированы для Реестр контейнеров Azure (ACR) в рамках поставщиков ресурсов подписки.
В следующем примере mysourceregistry находится в другой подписке от myregistry в том же клиенте Active Directory. Укажите идентификатор ресурса исходного реестра с параметром --registry. Обратите внимание, что параметр --source указывает только исходный репозиторий и тег, а не имя сервера входа в реестр.
az acr import \
--name myregistry \
--source aci-helloworld:latest \
--image aci-hello-world:latest \
--registry /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/sourceResourceGroup/providers/Microsoft.ContainerRegistry/registries/mysourceregistry
Импорт из реестра с использованием учетных данных субъекта-службы
Чтобы выполнить импорт из реестра, к которому вы не можете получить доступ с помощью разрешений интегрированного Active Directory, можно использовать учетные данные субъекта-службы (если доступно) для исходного реестра. Укажите идентификатор приложения и пароль субъекта-службы Microsoft Entra с корректным назначением ролей для доступа к исходному реестру.
- Для субъектов-служб Microsoft Entra убедитесь, что
Container Registry Repository Readerбыли применены (для реестров с поддержкой ABAC) илиAcrPull(для реестров, отличных от ABAC).
Субъект-службу можно использовать для систем сборки и других автоматических систем, чтобы импортировать образы в ваш реестр.
az acr import \
--name myregistry \
--source sourceregistry.azurecr.io/sourcerrepo:tag \
--image targetimage:tag \
--username <SP_App_ID> \
--password <SP_Passwd>
Импорт из реестра контейнеров Azure в другом клиенте AD
Чтобы импортировать из реестра контейнеров Azure в другом клиенте Microsoft Entra, укажите исходный реестр по имени сервера входа и укажите учетные данные, которые позволяют доступ на вытягивание в реестр.
- Импорт между клиентами по отключенному реестру общедоступного доступа не поддерживается.
Межклиентский импорт с помощью имени пользователя и пароля
Например, используйте токен, настроенный на область репозитория, отличный от Microsoft Entra, и пароль, или идентификатор приложения и пароль сервисного принципала Microsoft Entra, который имеет корректные назначения ролей в исходном реестре.
- Для субъектов-служб Microsoft Entra убедитесь, чтобы в исходном реестре был назначен
Container Registry Repository Reader(для реестров с поддержкой ABAC) илиAcrPull(для реестров, отличных от ABAC).
az acr import \
--name myregistry \
--source sourceregistry.azurecr.io/sourcerrepo:tag \
--image targetimage:tag \
--username <SP_App_ID> \
--password <SP_Passwd>
Межклиентский импорт с помощью маркера доступа
- Импорт между клиентами по отключенному реестру общедоступного доступа не поддерживается.
Чтобы получить доступ к исходному реестру с помощью удостоверения в исходном клиенте, обладающем разрешениями на операции с реестром, можно обзавестись маркером доступа.
# Login to Azure CLI with the identity, for example a user-assigned managed identity
az login --identity --username <identity_ID>
# Get access token returned by `az account get-access-token`
az account get-access-token
В целевом клиенте передайте маркер доступа в качестве пароля для команды az acr import. Исходный реестр указывает имя сервера входа. Обратите внимание, что в этой команде не требуется имя пользователя.
az acr import \
--name myregistry \
--source sourceregistry.azurecr.io/sourcerrepo:tag \
--image targetimage:tag \
--password <access-token>
Импорт из закрытого реестра контейнеров, не относящегося к Azure
Импортируйте образ из частного реестра, не связанного с Azure, указав учетные данные, которые обеспечивают доступ к реестру с правами на извлечение данных. Например, извлеките образ из частного реестра Docker:
az acr import \
--name myregistry \
--source docker.io/sourcerepo/sourceimage:tag \
--image sourceimage:tag \
--username <username> \
--password <password>
Следующие шаги
В этой статье вы узнали об импорте образов контейнеров в Реестр контейнеров Azure из общедоступного реестра или другого частного реестра.
- Для получения дополнительных параметров импорта изображений см. справочник по команде az acr import.
Импорт изображений позволяет переместить содержимое в реестр контейнеров в другом регионе Azure, подписке или клиенте Microsoft Entra. Дополнительные сведения см. в разделе "Перенос реестра контейнеров" вручную в другой регион.
Отключите экспорт артефактов из реестра контейнеров с ограниченным доступом к сети.