0Pricing
Azure Fundamentals · Урок

Azure Container Registry

Создавайте и отправляйте образы Docker в частный Azure Container Registry, управляйте доступом с помощью назначений ролей и автоматизируйте сборку образов с помощью задач ACR.

«Azure Container Registry» — бесплатный урок Azure Fundamentals на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Azure Fundamentals, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Azure Fundamentals содержит 4 уроков всего.

Что такое Azure Container Registry?

Azure Container Registry (ACR) — это управляемая частная служба реестра Docker, созданная на основе проекта с открытым исходным кодом Docker Registry 2.0. Она хранит контейнерные образы и связанные артефакты (диаграммы Helm, артефакты OCI), используемые в развёртываниях Azure, и управляет ими. ACR изначально интегрируется с Azure Kubernetes Service (AKS), Azure Container Instances (ACI) и App Service, обеспечивая получение образов без необходимости управлять учётными данными.

Уровни службы ACR

ACR предлагает три уровня службы. Basic оптимизирован по стоимости для обучения и разработки с небольшой пропускной способностью: он предоставляет 10 ГБ хранилища и ограниченную поддержку веб-перехватчиков. Standard добавляет георепликацию и увеличивает пропускную способность, что подходит для большинства рабочих нагрузок. Premium включает георепликацию, доверие к содержимому, частные ссылки, ключи под управлением клиента и максимальную пропускную способность; этот уровень требуется для корпоративных требований к безопасности.

# Create a Premium ACR in East US
az acr create \
  --name mycontainerregistry \
  --resource-group MyRG \
  --location eastus \
  --sku Premium

# List ACR instances in the subscription
az acr list --query '[].{name:name, sku:sku.name, loginServer:loginServer}' -o table

Отправка образов в ACR

Чтобы отправить образ Docker в ACR, аутентифицируйте клиент Docker, добавьте к локальному образу тег с именем узла сервера входа ACR и отправьте образ. URL-адрес сервера входа ACR имеет формат <registryname>.azurecr.io. Для аутентификации используются учётные данные Azure AD через az acr login (для интерактивного использования), либо пароль администратора ACR или субъект-служба для автоматизированных конвейеров.

# Authenticate to ACR
az acr login --name mycontainerregistry

# Tag a local image for ACR
docker tag myapp:latest mycontainerregistry.azurecr.io/myapp:v1.0

# Push the image
docker push mycontainerregistry.azurecr.io/myapp:v1.0

# List images in the registry
az acr repository list --name mycontainerregistry -o table
az acr repository show-tags --name mycontainerregistry --repository myapp

Задания ACR: сборки в облаке

Задания ACR позволяют собирать образы Docker в облаке без локальной службы Docker. Быстрое задание (az acr build) отправляет контекст сборки в ACR и удалённо запускает Dockerfile, создавая образ, который напрямую сохраняется в реестре. Задания по расписанию или на основе триггеров могут автоматически пересобирать образ при обновлении базового образа или фиксации кода в GitHub, обеспечивая полный конвейер непрерывной интеграции контейнеров без отдельного агента сборки.

# Quick task: build and push without local Docker
az acr build \
  --registry mycontainerregistry \
  --image myapp:v1.0 \
  . # build context (current directory with Dockerfile)

# Define a multi-step ACR Task triggered on commit
az acr task create \
  --name buildAndTest \
  --registry mycontainerregistry \
  --context https://github.com/myorg/myrepo.git \
  --file acr-task.yaml \
  --git-access-token <GITHUB_PAT>

Управление доступом с помощью RBAC

ACR интегрируется с Azure RBAC для детального управления доступом. Встроенные роли ACR включают AcrPull (только получение образов — для служб развёртывания), AcrPush (получение и отправка — для конвейеров CI/CD) и AcrDelete (управление тегами образов). Назначьте роль AcrPull управляемому удостоверению AKS или App Service, чтобы контейнеры могли получать образы без хранения учётных данных.

# Grant AKS cluster's managed identity the AcrPull role
ACR_ID=$(az acr show --name mycontainerregistry --resource-group MyRG --query id -o tsv)
AKS_IDENTITY=$(az aks show --name myAKSCluster --resource-group MyRG \
  --query identityProfile.kubeletidentity.objectId -o tsv)

az role assignment create \
  --assignee $AKS_IDENTITY \
  --role AcrPull \
  --scope $ACR_ID

Георепликация для глобальных развёртываний

Георепликация (уровень Premium) реплицирует реестр в несколько регионов Azure. Когда AKS или ACI в регионе получает образ, он обращается к ближайшей реплике, а не к удалённому реестру, что снижает задержку и расходы на исходящий трафик. Репликация прозрачна: один и тот же URI образа работает глобально, а ACR автоматически направляет запросы на получение к географически ближайшей реплике.

# Add a geo-replication to West Europe
az acr replication create \
  --name westeurope \
  --registry mycontainerregistry \
  --location westeurope

# List all replicas
az acr replication list \
  --registry mycontainerregistry \
  --query '[].{name:name, location:location, status:provisioningState}' -o table

Доверие к содержимому и подписание образов

Доверие к содержимому (уровень Premium) использует Docker Notary, чтобы гарантировать, что из реестра можно получить только подписанные образы. Если доверие к содержимому включено в ACR, неподписанные образы отклоняются. Подписание выполняется в конвейере непрерывной интеграции с помощью набора инструментов Docker Content Trust и доверенной пары ключей. Это предотвращает атаки на цепочку поставок, при которых вредоносный образ отправляется в рабочую среду и развёртывается там.

# Enable content trust on the registry
az acr config content-trust update \
  --registry mycontainerregistry \
  --status enabled

# Sign an image when pushing (DOCKER_CONTENT_TRUST env var)
# export DOCKER_CONTENT_TRUST=1
# docker push mycontainerregistry.azurecr.io/myapp:v1.0
# (Docker prompts for signing key passphrase)

Сканирование уязвимостей с помощью Defender

Включите Microsoft Defender for Containers, чтобы автоматически сканировать каждый образ, отправленный в ACR, на наличие известных уязвимостей уровня ОС и приложения (CVE). Defender создаёт отчёт со списком уязвимостей по степени опасности (критическая, высокая, средняя, низкая) и предоставляет рекомендации по устранению. С помощью интеграции с Azure Policy можно настроить политики, запрещающие развёртывание образов с критическими уязвимостями в кластеры AKS.

# Enable Defender for Containers on the subscription
az security pricing create \
  --name Containers \
  --tier Standard

# View vulnerability assessment results
az security assessment list \
  --query "[?contains(displayName, 'Container')].{name:displayName, status:status.code}" \
  -o table

Частная конечная точка для ACR

Для максимальной безопасности отключите общедоступный сетевой доступ к ACR и подключайтесь к нему исключительно через частную конечную точку внутри VNet. Это гарантирует, что контейнерные образы никогда не передаются через общедоступный интернет: все операции получения проходят по частной магистральной сети Azure. Настройте частную зону DNS (privatelink.azurecr.io), чтобы имя узла реестра разрешалось в частный IP-адрес внутри VNet.

# Create a private endpoint for ACR
az network private-endpoint create \
  --name acr-private-endpoint \
  --resource-group MyRG \
  --vnet-name MyVNet \
  --subnet PrivateEndpointSubnet \
  --private-connection-resource-id \
    $(az acr show --name mycontainerregistry --query id -o tsv) \
  --group-id registry \
  --connection-name acrConnection

# Disable public access
az acr update \
  --name mycontainerregistry \
  --public-network-enabled false

Управление жизненным циклом: удаление старых образов

Без управления жизненным циклом в реестрах контейнеров накапливаются тысячи старых тегов образов, занимающих дорогостоящее хранилище. Используйте задания очистки ACR (встроенное задание по таймеру), чтобы удалять манифесты без тегов и теги, срок существования которых превышает заданный период. Запускайте очистку по расписанию с помощью az acr task create и команды acr purge, выбирая определённые репозитории и сохраняя минимальное количество последних тегов.

# Create a scheduled purge task: delete tags older than 30d
az acr task create \
  --name scheduledPurge \
  --registry mycontainerregistry \
  --cmd 'acr purge --filter myapp:.*  --ago 30d --keep 5 --untagged' \
  --schedule '0 1 * * *' \
  --context /dev/null

Интеграция ACR с AKS

Самый простой способ подключить AKS к ACR — использовать команду az aks update --attach-acr, которая автоматически назначает управляемому удостоверению AKS роль AcrPull. После подключения в спецификациях Pod образы указываются только с полным именем хоста ACR — imagePullSecrets не требуются, поскольку AKS прозрачно использует управляемое удостоверение для аутентификации на уровне узла.

# Attach ACR to an existing AKS cluster
az aks update \
  --name myAKSCluster \
  --resource-group MyRG \
  --attach-acr mycontainerregistry

# Now pods can use ACR images without imagePullSecrets
# Example pod spec:
# spec:
#   containers:
#   - name: myapp
#     image: mycontainerregistry.azurecr.io/myapp:v1.0

Быстрая проверка

Проверьте своё понимание концепций Microsoft Azure Fundamentals (AZ-900), изученных в этом уроке.

Итоги урока

В этом уроке Вы узнали, что Azure Container Registry (ACR) — это управляемый частный реестр для хранения образов Docker, ACR Tasks позволяют выполнять сборку образов в облаке без локальной службы Docker, а RBAC roles (AcrPull, AcrPush) управляют доступом служб развертывания и конвейеров CI/CD. Далее мы рассмотрим Azure Container Instances.

Часто задаваемые вопросы

Урок «Azure Container Registry» бесплатный?

Да — полный текст урока «Azure Container Registry» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Azure Fundamentals, подпишись на CoddyKit PRO. Курс Azure Fundamentals содержит 4 уроков всего.

Чему я научусь в уроке «Azure Container Registry»?

Создавайте и отправляйте образы Docker в частный Azure Container Registry, управляйте доступом с помощью назначений ролей и автоматизируйте сборку образов с помощью задач ACR. Ты практикуешь Azure Fundamentals с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Azure Fundamentals?

Предыдущий опыт не требуется. Azure Fundamentals на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Azure Container Registry»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Azure Fundamentals?

Да. Каждый урок Azure Fundamentals включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Azure Container Registry
  2. Azure Container Instances
  3. Основы Kubernetes для Azure
  4. Развертывание рабочих нагрузок в AKS
← Назад к Azure Fundamentals