Поделиться через


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

Реестр контейнеров 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.

Снимок экрана: просмотр параметра метки доменного имени и DNS-имени.

Настройка режима разрешений назначения ролей

Настройте режим разрешений назначения ролей нового реестра. Этот параметр определяет, как управление доступом на основе ролей 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.