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

Следуя этим рекомендациям, вы сможете обеспечить максимальную производительность и экономичное использование частного реестра Docker в Azure.By following these best practices, you can help maximize the performance and cost-effective use of your private Docker registry in Azure.

См. также рекомендации по созданию тегов и управлению версиями для образов контейнеров, чтобы ознакомиться со стратегиями создания тегов и управления версиями образов в реестре.See also Recommendations for tagging and versioning container images for strategies to tag and version images in your registry.

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

Создайте реестр контейнеров в том же регионе Azure, в котором выполняется развертывание контейнеров.Create your container registry in the same Azure region in which you deploy containers. Размещение реестра в сети региона, расположенной близко к узлам контейнеров, поможет снизить как задержки, так и затраты.Placing your registry in a region that is network-close to your container hosts can help lower both latency and cost.

Развертывание в ближайшей сети — одна из основных причин использования частного реестра контейнеров.Network-close deployment is one of the primary reasons for using a private container registry. Образы Docker обладают эффективной многоуровневой конструкцией, позволяющей выполнять добавочное развертывание.Docker images have an efficient layering construct that allows for incremental deployments. Тем не менее новым узлам требуется извлекать все уровни, необходимые для заданного образа.However, new nodes need to pull all layers required for a given image. Эта начальная команда docker pull может быстро добавить в развертывание до нескольких гигабайтов.This initial docker pull can quickly add up to multiple gigabytes. Размещение частного реестра близко к развертыванию сводит к минимуму задержку сети.Having a private registry close to your deployment minimizes the network latency. Кроме того, исходящий сетевой трафик во всех общедоступных облаках, включая Azure, является платным.Additionally, all public clouds, Azure included, implement network egress fees. Извлечение образов из одного центра обработки данных в другой увеличивает затраты на исходящий сетевой трафик, как и задержку.Pulling images from one datacenter to another adds network egress fees, in addition to the latency.

Георепликация развертываний в нескольких регионахGeo-replicate multi-region deployments

Используйте функцию георепликации реестра контейнеров Azure, если вы развертываете контейнеры в нескольких регионах.Use Azure Container Registry's geo-replication feature if you're deploying containers to multiple regions. Будь то обслуживание глобальных клиентов из локальных центров обработки данных или совместная работа команды разработчиков, находящихся в разных расположениях, можно упростить управление реестром и свести к минимуму задержку, выполняя георепликацию реестра.Whether you're serving global customers from local data centers or your development team is in different locations, you can simplify registry management and minimize latency by geo-replicating your registry. Георепликация доступна только при наличии реестров уровня Премиум.Geo-replication is available only with Premium registries.

Чтобы узнать, как использовать георепликацию, ознакомьтесь с руководством, состоящим из трех частей, Подготовка геореплицированного реестра контейнеров Azure.To learn how to use geo-replication, see the three-part tutorial, Geo-replication in Azure Container Registry.

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

За счет использования пространств имен репозитория можно обеспечить общий доступ к отдельному реестру для нескольких групп в вашей организации.By leveraging repository namespaces, you can allow sharing a single registry across multiple groups within your organization. Реестры могут совместно использоваться в различных развертываниях и разными командами.Registries can be shared across deployments and teams. Реестр контейнеров Azure поддерживает вложенные пространства имен, включая изоляцию групп.Azure Container Registry supports nested namespaces, enabling group isolation.

Например, рассмотрим следующие теги образа контейнера.For example, consider the following container image tags. Образы, используемые во всей в организации, например aspnetcore, помещаются в корневое пространство имен, тогда как образы контейнеров, принадлежащие группе по эксплуатации и обслуживанию (Products) и группе по маркетингу (Marketing), используют собственные пространства имен.Images that are used corporate-wide, like aspnetcore, are placed in the root namespace, while container images owned by the Products and Marketing groups each use their own namespaces.

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

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

Так как реестры контейнеров — это ресурсы, используемые на нескольких узлах контейнера, реестр должен находиться в собственной группе ресурсов.Because container registries are resources that are used across multiple container hosts, a registry should reside in its own resource group.

Хотя вы можете поэкспериментировать с определенным типом узла, например с экземплярами контейнеров Azure, скорее всего вы решите удалить экземпляр контейнера после завершения работы.Although you might experiment with a specific host type, such as Azure Container Instances, you'll likely want to delete the container instance when you're done. Однако вы можете также хранить коллекцию образов, отправленных в реестр контейнеров Azure.However, you might also want to keep the collection of images you pushed to Azure Container Registry. Поместив реестр в собственную группу ресурсов, можно свести к минимуму риск случайного удаления коллекции образов из реестра при удалении группы ресурсов экземпляра контейнера.By placing your registry in its own resource group, you minimize the risk of accidentally deleting the collection of images in the registry when you delete the container instance resource group.

АутентификацияAuthentication

При аутентификации с помощью реестра контейнеров Azure существуют два основных сценария: отдельная аутентификация и аутентификация службы (или "автономная").When authenticating with an Azure container registry, there are two primary scenarios: individual authentication, and service (or "headless") authentication. В таблице ниже приводится краткий обзор этих сценариев и рекомендуемый метод аутентификации для каждого из них.The following table provides a brief overview of these scenarios, and the recommended method of authentication for each.

ТипType Пример сценарияExample scenario Рекомендуемый методRecommended method
Отдельное удостоверениеIndividual identity Разработчик извлекает образы на свой компьютер для разработки или отправляет образы с него.A developer pulling images to or pushing images from their development machine. az acr loginaz acr login
Удостоверение службы или автономное удостоверениеHeadless/service identity Конвейеры сборки и развертывания, в которых пользователь не участвует напрямую.Build and deployment pipelines where the user isn't directly involved. Субъект-службаService principal

Более подробные сведения об аутентификации с помощью реестра контейнеров Azure см. в разделе Аутентификация с помощью частного реестра контейнеров Docker.For in-depth information about Azure Container Registry authentication, see Authenticate with an Azure container registry.

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

Ограничения хранилища для каждого уровня служб реестра контейнеров предназначены для согласования с типичным сценарием: Базовый — для начала работы, Стандартный — для большинства рабочих приложений и Премиум — для гипермасштабируемой производительности и георепликации.The storage constraints of each container registry service tier are intended to align with a typical scenario: Basic for getting started, Standard for the majority of production applications, and Premium for hyper-scale performance and geo-replication. На протяжении жизненного цикла вашего реестра вам необходимо управлять его размером, периодически удаляя неиспользуемое содержимое.Throughout the life of your registry, you should manage its size by periodically deleting unused content.

Используйте команду Azure CLI az acr show-usage для отображения текущего размера реестра.Use the Azure CLI command az acr show-usage to display the current size of your registry:

az acr show-usage --resource-group myResourceGroup --name myregistry --output table
NAME      LIMIT         CURRENT VALUE    UNIT
--------  ------------  ---------------  ------
Size      536870912000  185444288        Bytes
Webhooks  100                            Count

Также можно найти текущее хранилище, используемое в обзоре реестра на портале Azure.You can also find the current storage used in the Overview of your registry in the Azure portal:

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

Удаление данных образаDelete image data

Реестр контейнеров Azure поддерживает несколько методов для удаления данных образа из реестра контейнеров.Azure Container Registry supports several methods for deleting image data from your container registry. Можно удалить образы с использованием тега или манифеста хэш-кода или удалить весь репозиторий.You can delete images by tag or manifest digest, or delete a whole repository.

Дополнительные сведения об удалении данных образа из реестра, включая немаркированные (иногда называемые "висячие" или "потерянные") образы, см. здесь.For details on deleting image data from your registry, including untagged (sometimes called "dangling" or "orphaned") images, see Delete container images in Azure Container Registry.

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

Реестр контейнеров Azure доступен на нескольких уровнях (называемых номерами SKU), каждый из которых обеспечивает разные возможности.Azure Container Registry is available in several tiers (also called SKUs) that each provide different capabilities. Дополнительные сведения об уровнях служб см. в статье Уровни служб реестра контейнеров Azure.For details on the available service tiers, see Azure Container Registry service tiers.