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