Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Реестр контейнеров Azure — это служба частного реестра для создания, хранения и обслуживания образов контейнеров и связанных с ними артефактов. В этом кратком руководстве показано, как создать экземпляр реестра контейнеров Azure с помощью портала Azure. Затем используйте команды Docker, чтобы отправить образ контейнера в реестр, после чего извлеките образ из контейнера и запустите его.
Чтобы войти в реестр для работы с образами контейнеров, в этом кратком руководстве требуется использовать Azure CLI (рекомендуется версия 2.0.55 или более поздняя). Чтобы узнать версию, выполните команду az --version
. Если вам необходимо выполнить установку или обновление, см. статью Установка Azure CLI 2.0.
Также необходимо установить Docker локально с запущенной управляющей программой. Docker предоставляет пакеты, которые позволяют быстро настроить Docker в любой системе Mac, Windows или Linux.
Вход в Azure
Войдите на портал Azure.
Создание реестра контейнеров
Последовательно выберите Создать ресурс>Контейнеры>Реестр контейнеров.
Настройка имени реестра контейнеров и номера SKU
На вкладке Основные сведения введите значения в поле Группа ресурсов и Имя реестра. Имя реестра должно быть уникальным в Azure, содержать от 5 до 50 буквенно-цифровых символов и не включать символы дефиса. Для быстрого запуска создайте новую группу ресурсов в West US 2
расположении с именем myResourceGroup
, а для SKU выберите Standard
.
Дополнительные сведения о различных параметрах SKU см. в разделе SKU реестра контейнеров Azure.
Настроить параметр "Метка доменного имени" (DNL)
Функция метки доменных имен (DNL) повышает безопасность, предотвращая атаки на захват поддомена DNS-имен реестра. Эти атаки возникают при удалении реестра, когда другая сущность повторно использует такое же имя, что может привести к тому, что последующие ссылки обращаются к реестру, созданному новой сущностью.
DNL решает эту проблему путем добавления уникального хэша к DNS-имени реестра. Это гарантирует, что даже если одно и то же имя реестра повторно используется другой сущностью, DNS-имена будут отличаться из-за уникального хэша. Это защищает низкоуровневые ссылки от непреднамеренного указания на реестр, повторно созданный другой сущностью.
При создании реестра на портале выберите область метки доменного имени в доступных параметрах:
-
Небезопасно: создает DNS-имя as-isна основе имени реестра (например,
contosoacrregistry.azurecr.io
). Этот параметр не включает защиту DNL. - Повторное использование клиента: добавляет уникальный хэш на основе имени клиента и реестра, обеспечивая уникальность DNS-имени в клиенте.
- Повторное использование подписки: добавляет уникальный хэш на основе подписки, клиента и имени реестра, обеспечивая уникальность DNS-имени в подписке.
- Повторное использование группы ресурсов: добавляет уникальный хэш на основе группы ресурсов, подписки, клиента и имени реестра, обеспечивая уникальность DNS-имени в группе ресурсов.
- Нет повторного использования: создает уникальное DNS-имя с уникальным хэшом каждый раз при создании реестра независимо от других факторов, гарантируя, что DNS-имя всегда уникально.
Замечание
Неизменяемая конфигурация: область DNL, выбранная во время создания реестра, является постоянной и не может быть изменена позже. Это гарантирует согласованное поведение DNS и предотвращает нарушения подчиненных ссылок.
Влияние параметров DNL на DNS-имя
Формат DNS-имени: для всех параметров с поддержкой DNL, кроме небезопасных, DNS-имя следует формату registryname-hash.azurecr.io
, где дефис (-
) служит делайнатором хэша. Чтобы избежать конфликтов, дефис (-
) не допускается в имени реестра. Например, реестр с именем contosoacrregistry
области Tenant Reuse
DNL будет иметь DNS-имя, например contosoacrregistry-e7ggejfuhzhgedc8.azurecr.io
.
Подчиненные ссылки: DNS-имя может отличаться от имени реестра, требуя обновлений в подчиненных файлах, таких как Dockerfiles, Kubernetes YAML и диаграммы Helm, чтобы отразить полное DNS-имя с хэшом DNL. Например, если вы хотите, чтобы ваш дочерний Dockerfile ссылался на реестр под именем contosoacrregistry
с областью Tenant Reuse
DNL, вам нужно обновить ссылку на contosoacrregistry-e7ggejfuhzhgedc8.azurecr.io
в вашем дочернем Dockerfile.
Настройка режима разрешений назначения ролей
Настройте режим разрешений назначения ролей нового реестра. Этот параметр определяет, как управление доступом на основе ролей Microsoft Entra (RBAC) и назначения ролей управляются для реестра, включая использование управления доступом на основе атрибутов Microsoft Entra (ABAC) для разрешений репозитория Microsoft Entra.
Выберите "RBAC Registry + ABAC Repository Permissions", чтобы сохранить стандартные назначения ролей Microsoft Entra RBAC, при необходимости применяя условия Microsoft Entra ABAC для точного управления доступом на уровне репозитория.
Дополнительные сведения об этом параметре см. в разделе "Управление доступом на основе атрибутов Microsoft Entra" (ABAC) для разрешений репозитория.
Развертывание реестра контейнеров
Примите значения по умолчанию для остальных параметров. Затем выберите Просмотр и создание. Проверив параметры, нажмите кнопку Создать.
Совет
В этом кратком руководстве описано, как создать реестр уровня "Стандартный" , который достаточно для большинства рабочих процессов реестра контейнеров Azure. Выберите другие уровни, чтобы повысить пропускную способность хранилища и образов, а также получить такие возможности, как подключение с использованием частной конечной точки. Дополнительные сведения об уровнях служб (SKU) см. в статье Уровни служб реестра контейнеров.
Когда появится сообщение Развертывание прошло успешно, выберите реестр контейнеров на портале.
Запишите имя реестра и значение параметра Сервер для входа, представляющее собой полное имя, которое заканчивается на azurecr.io
, в облаке Azure. Если выбран параметр DNL, имя сервера входа будет содержать уникальный хэш.
Используйте сервер входа в следующих шагах при отправке и извлечении изображений с помощью Docker, а также в подчиненных ссылках, таких как Dockerfiles, Kubernetes YAML и диаграммы Helm.
Вход в раздел реестра
Перед загрузкой и выгрузкой образов контейнеров необходимо войти в реестр. Войдите в Azure CLI на локальном компьютере, а затем выполните команду az acr login.
Укажите только имя ресурса реестра при входе в систему с помощью Azure CLI, например az acr login -n registryname
. Не используйте полностью квалифицированное имя сервера входа, например registryname.azurecr.io
или registryname-hash.azurecr.io
(для реестров с поддержкой DNL).
az acr login --name <registry-name>
Пример:
az acr login --name contosoacrregistry
По завершении команда возвращает Login Succeeded
.
Отправка образа в реестр
Чтобы отправить образ в реестр контейнеров Azure, сначала нужно получить этот образ. Если у вас еще нет образов локального контейнера, используйте следующую команду docker pull, чтобы извлечь существующий общедоступный образ. Для этого примера извлеките образ hello-world
из Реестра контейнеров Майкрософт.
docker pull mcr.microsoft.com/hello-world
Прежде чем отправить образ в реестр, необходимо пометить его с помощью тега docker с полным именем сервера входа в реестр.
- Формат имени сервера входа для защищенных реестров доменных имен (DNL) с уникальным хэшом DNS-имени включен
mycontainerregistry-abc123.azurecr.io
. - Формат имени сервера входа для реестров, созданных с параметром DNL, это
Unsecure
.
Например, если реестр был создан с областью Tenant Reuse
DNL, имя сервера для входа может содержать хэш, как в DNS-имени mycontainerregistry-abc123.azurecr.io
. Если реестр был создан с параметром Unsecure
DNL, сервер входа будет выглядеть mycontainerregistry.azurecr.io
без хэша.
Дополнительные сведения о параметрах DNL при создании реестра и последствиях DNS-имени см. в кратком руководстве по созданию реестра на портале.
Пример. Добавление тегов к изображению перед отправкой
Промаркируйте изображение, используя команду docker tag, с помощью сервера входа в ваш реестр.
Тегирование изображения для реестра, не входящего в DNL.
docker tag mcr.microsoft.com/hello-world mycontainerregistry.azurecr.io/hello-world:v1
Тегирование изображения в реестре с поддержкой DNL:
docker tag mcr.microsoft.com/hello-world mycontainerregistry-abc123.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, созданный с помощью docker push
.
Выбрав репозиторий 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.
[...]
Очистка ресурсов
Чтобы очистить ресурсы, перейдите к группе ресурсов myResourceGroup на портале. После загрузки группы ресурсов щелкните пункт Удалить группу ресурсов, чтобы удалить группу ресурсов, реестр контейнеров и сохраненные образы контейнеров.
Следующие шаги
С помощью этого краткого руководства вы создали Реестр контейнеров Azure с использованием портала Azure, отправили образ контейнера, а затем извлекли этот образ оттуда и запустили его. Перейдите к руководствам по Реестру контейнеров Azure для более глубокого изучения ACR.