Рекомендации по использованию реестра контейнеров Azure

Следуя этим рекомендациям, вы сможете обеспечить максимальную производительность и экономичное использование частного реестра в Azure, чтобы сохранить и развернуть образы контейнеров и другие артефакты.

Общие сведения о концепциях реестра см. в разделе "Сведения о реестрах, репозиториях и образах". См. также рекомендации по тегированию и версионированию образов контейнеров для стратегий маркировки и версионирования изображений в вашем реестре.

Развертывание в ближайшей сети

Создайте реестр контейнеров в том же регионе Azure, в котором выполняется развертывание контейнеров. Размещение реестра в сети региона, расположенной близко к узлам контейнеров, поможет снизить как задержки, так и затраты.

Развертывание в ближайшей сети — одна из основных причин использования частного реестра контейнеров. Образы Docker имеют эффективную архитектуру слоев, которая позволяет поэтапные развертывания. Тем не менее новым узлам требуется извлекать все слои, необходимые для заданного образа. Эта начальная часть docker pull может быстро достигать нескольких гигабайт. Размещение частного реестра близко к развертыванию сводит к минимуму задержку сети. Кроме того, исходящий сетевой трафик во всех общедоступных облаках, включая Azure, является платным. Извлечение образов из одного центра обработки данных в другой увеличивает затраты на исходящий сетевой трафик, как и задержку.

Георепликация развертываний в различных регионах

При развертывании контейнеров в нескольких регионах используйте функцию георепликации реестра контейнеров Azure. Будь то обслуживание глобальных клиентов из локальных центров обработки данных или совместная работа команды разработчиков, находящихся в разных расположениях, можно упростить управление реестром и свести к минимуму задержку, выполняя георепликацию реестра. Вы также можете настроить региональные веб-перехватчики, чтобы уведомлять вас о событиях в определенных репликах, например, при отправке изображений.

Георепликация доступна в реестрах Premium .

Максимизируйте эффективность извлечения

В дополнение к размещению изображений рядом с вашими развертываниями, характеристики самих образов могут повлиять на производительность их загрузки.

  • Размер изображения — свести к минимуму размеры изображений, удаляя ненужные слои или уменьшая размер слоев. Одним из способов уменьшения размера образа является использование многоэтапного подхода к сборке Docker для включения только необходимых компонентов среды выполнения.

    Также проверьте, может ли образ содержать более легкий базовый образ ОС. Если вы используете среду развертывания, например службу "Экземпляры контейнеров Azure", которая кэширует определенные базовые образы, проверьте, можно ли переключить слой изображений для одного из кэшированных образов.

  • Количество слоев — балансируйте количество используемых слоев. Если слоев слишком мало, вы не получите преимущества от повторного использования слоев и кэширования на хосте. Слишком большое количество слоев, и ваша среда развертывания будет тратить больше времени на извлечение и распаковку. Оптимальным является количество от 5 до 10 слоев.

Кроме того, выберите уровень служб реестра контейнеров Azure, соответствующий вашим потребностям в производительности. Уровень "Премиум" обеспечивает наибольшую пропускную способность и максимальную скорость выполнения параллельных операций чтения и записи при наличии крупномасштабных развертываний.

Пространства имен репозитория

За счет использования пространств имен репозитория можно обеспечить общий доступ к отдельному реестру нескольким группам в вашей организации. Реестры могут совместно использоваться в различных развертываниях и разными командами. Реестр контейнеров Azure поддерживает вложенные пространства имен, позволяя изоляцию групп. Однако реестр управляет всеми репозиториями независимо друг от друга, а не в виде иерархии.

Например, рассмотрим следующие теги образа контейнера. Образы, используемые во всей организации, например aspnetcore, помещаются в корневое пространство имен, а образы контейнеров, принадлежащие группе по продукции и группе по маркетингу, используют собственные пространства имен.

  • contoso.azurecr.io/aspnetcore:2.0
  • contoso.azurecr.io/products/widget/web:1
  • contoso.azurecr.io/products/bettermousetrap/refundapi:12.3
  • contoso.azurecr.io/marketing/2023-fall/concertpromotions/campaign:218.42

Выделенная группа ресурсов

Так как реестры контейнеров — это ресурсы, используемые на нескольких узлах контейнера, реестр должен находиться в собственной группе ресурсов.

Хотя вы можете поэкспериментировать с определенным типом узла, например экземплярами контейнеров Azure, скорее всего, вы захотите удалить экземпляр контейнера после того как вы закончите. Однако вы можете также хранить коллекцию образов, отправленных в реестр контейнеров Azure. Поместив реестр в собственную группу ресурсов, можно свести к минимуму риск случайного удаления коллекции образов из реестра при удалении группы ресурсов экземпляра контейнера.

Проверка подлинности и авторизация

При аутентификации с помощью реестра контейнеров Azure существуют два основных сценария: отдельная аутентификация и аутентификация службы (или "автономная"). В таблице ниже приводится краткий обзор этих сценариев и рекомендуемый метод аутентификации для каждого из них.

Тип Пример сценария Рекомендуемый способ
Индивидуальная личность Разработчик загружает изображения на компьютер разработки или выгружает их с него. az acr login
Удостоверение службы или автономное удостоверение Конвейеры сборки и развертывания, в которых пользователь не участвует напрямую. Узл-служба

Подробные сведения об этих и других сценариях проверки подлинности реестра контейнеров Azure см. в статье "Проверка подлинности с помощью реестра контейнеров Azure".

Реестр контейнеров Azure поддерживает методы обеспечения безопасности в вашей организации для распределения обязанностей и привилегий между различными удостоверениями. Используя управление доступом на основе ролей, назначьте соответствующие разрешения разным пользователям, служебным принципалам или другим удостоверениям, выполняющим различные операции с реестром. Например, назначьте разрешения на отправку служебному принципалу, используемому в конвейере сборки, и назначьте разрешения на получение другому объекту, используемому для развертывания. Используйте разрешения репозитория на основе Microsoft Entra для точного доступа к определенным репозиториям. В качестве альтернативы можно использовать разрешения репозитория на основе токенов для системы Entra, не относящиеся к Майкрософт.

Управление размером реестра

Ограничения хранилища каждого уровня служб реестра контейнеров предназначены для согласования с типичным сценарием: Базовый для начала работы, стандартный для большинства рабочих приложений и Premium для гипермасштабирования производительности и георепликации. На протяжении жизненного цикла вашего реестра вам необходимо управлять его размером, периодически удаляя неиспользуемое содержимое.

Используйте команду Azure CLI az acr show-usage , чтобы отобразить текущее потребление хранилища и других ресурсов в реестре:

az acr show-usage --resource-group myResourceGroup --name myregistry --output table

Образец вывода:

NAME                        LIMIT         CURRENT VALUE    UNIT
--------------------------  ------------  ---------------  ------
Size                        536870912000  215629144        Bytes
Webhooks                    500           1                Count
Geo-replications            -1            3                Count
IPRules                     100           1                Count
VNetRules                   100           0                Count
PrivateEndpointConnections  10            0                Count

Вы также можете найти текущее использование хранилища в обзоре реестра на портале Azure:

Сведения об использовании реестра на портале Azure

Примечание.

В геореплицированном реестре для домашнего региона отображается использование хранилища. Умножьте его на количество репликаций, чтобы получить значение объема использованного хранилища реестра.

Удаление данных изображения

Реестр контейнеров Azure поддерживает несколько методов для удаления данных образа из вашего реестра. Можно удалить образы по тегу или дайджесту манифеста, либо удалить весь репозиторий.

Дополнительная информация об удалении данных образов из реестра, включая непривязанные (иногда называемые "dangling" или "потерянными") образы, см. в статье "Удаление образов контейнеров в реестре контейнеров Azure". Вы также можете задать политику хранения для невидимых манифестов.

Следующие шаги

Реестр контейнеров Azure доступен на нескольких уровнях (называемых номерами SKU), которые обеспечивают разные возможности. Дополнительные сведения о доступных уровнях служб см. в разделе "Уровни служб реестра контейнеров Azure".

Рекомендации по улучшению состояния безопасности реестров контейнеров см. в разделе "Базовые показатели безопасности Azure" для Реестра контейнеров Azure.