Устранение неполадок в сети при работе с реестром

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

Симптомы

Признаки могут выражаться следующим образом.

  • Не удается отправить или извлечь образы, отображается сообщение об ошибке dial tcp: lookup myregistry.azurecr.io
  • Не удается отправить или извлечь образы, отображается сообщение об ошибке Client.Timeout exceeded while awaiting headers
  • Не удается отправить или извлечь образы, отображается сообщение об ошибке Azure CLI Could not connect to the registry login server
  • Не удается извлечь образы из реестра в службу Azure Kubernetes или другую службу Azure
  • Не удается получить доступ к реестру в сети с прокси-сервером HTTPS, отображается сообщение об ошибке Error response from daemon: login attempt failed with status: 403 Forbidden или Error response from daemon: Get <registry>: proxyconnect tcp: EOF Login failed
  • Не удается настроить параметры виртуальной сети, отображается сообщение об ошибке Failed to save firewall and virtual network settings for container registry
  • Не удается получить доступ или просмотреть параметры реестра на портале Azure или управлять реестром с помощью Azure CLI
  • Не удается добавить или изменить настройки виртуальной сети или правила общего доступа
  • Служба "Задачи ACR" не может отправлять или извлекать образы
  • Microsoft Defender для облака не может сканировать образы в реестре или результаты проверки не отображаются в Microsoft Defender для облака.
  • При попытке доступа к реестру, имеющему частную конечную точку, отображается сообщение об ошибке host is not reachable.

Причины

  • Брандмауэр или прокси клиента блокирует доступ — решение
  • Правила доступа к публичной сети в реестре блокируют доступ — решение
  • Конфигурация виртуальной сети или частной конечной точки блокирует доступ — решение
  • Вы пытаетесь интегрировать Microsoft Defender для облака или другие службы Azure с реестром, имеющим частную конечную точку, конечную точку службы или правила доступа к общедоступному IP-адресу — решение

Дальнейшая диагностика

Выполните команду az acr check-health, чтобы получить дополнительную информацию о работоспособности среды реестра и, при необходимости, получить доступ к целевому реестру. Например, диагностируйте проблемы с сетевым подключением или конфигурацией.

Примеры команд см. в статье Проверка работоспособности реестра контейнеров Azure. Если сообщается об ошибках, см. справку по ошибкам и следующие статьи, чтобы найти информацию по рекомендуемым решениям.

Если у вас возникли проблемы с использованием службы Azure Kubernetes с интегрированным реестром, выполните команду az aks check-acr, чтобы убедиться, что у кластера AKS есть доступ к реестру.

Примечание.

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

Возможные решения

Настройка доступа к брандмауэру клиента

Чтобы получить доступ к реестру в сети с брандмауэром или прокси-сервером, настройте правила брандмауэра для доступа к общедоступным конечным точкам REST и конечным точкам данных. Если выделенные конечные точки данных включены, вам потребуются правила для доступа:

  • Конечная точка REST: <registryname>.azurecr.io
  • Конечные точки данных: <registry-name>.<region>.data.azurecr.io

Для геореплицированного реестра настройте доступ к конечной точке данных для каждой региональной реплики.

Убедитесь, что и клиент Docker, и управляющая программа Docker настроены как прокси HTTPS. После изменения настроек прокси управляющей программы Docker обязательно перезапускайте ее.

Журналы ресурсов реестра в таблице ContainerRegistryLoginEvents могут помочь диагностировать заблокированную попытку подключения.

Связанные ссылки

Настройка общего доступа к реестру

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

Если в виртуальной сети настроена конечная точка службы, отключение доступа по общедоступной сети также отключает доступ через конечную точку службы. Если в виртуальной сети настроен Приватный канал, правила IP-сети не применяются к частным конечным точкам реестра.

Связанные ссылки

Настройка доступа к виртуальной сети

Убедитесь, что в виртуальной сети настроена частная конечная точка для Приватного канала или конечная точка службы (предварительная версия). В настоящее время конечная точка Бастиона Azure не поддерживается.

Если настроена частная конечная точка, убедитесь, что DNS преобразует общедоступное полное доменное имя реестра, например myregistry.azurecr.IO, в частный IP-адрес реестра.

  • Выполните команду az acr check-health с параметром --vnet, чтобы подтвердить маршрутизацию DNS к частной конечной точке в виртуальной сети.
  • Используйте служебную программу сети, например dig или nslookup, для поиска записей DNS.
  • Убедитесь, что для полного доменного имени реестра и для каждого полного доменного имени конечной точки данных настроены записи DNS.

Проверьте правила NSG и теги служб, используемые для ограничения трафика к реестру от других ресурсов в сети.

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

Если вы хотите ограничить доступ к реестру через виртуальную сеть в другой подписке Azure, зарегистрируйте в этой подписке поставщик ресурсов Microsoft.ContainerRegistry. Зарегистрируйте поставщик ресурсов для Реестра контейнеров Azure, используя портал Azure, Azure CLI или другие средства Azure.

Если в сети настроен Брандмауэр Azure или аналогичное решение, убедитесь, что для исходящего трафика от других ресурсов, таких как кластер AKS, разрешен доступ к конечным точкам реестра.

Связанные ссылки

Настройка доступа к службам

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

  • Microsoft Defender для облака не может выполнять сканирование уязвимостей образов в реестре, который ограничивает доступ к частным конечным точкам, выбранным подсетям или IP-адресам.
  • Ресурсы некоторых служб Azure, в том числе Служба приложений Azure и Экземпляры контейнеров Azure, не могут получить доступ к реестру контейнеров с сетевыми ограничениями.

Если требуется доступ или интеграция этих служб Azure с реестром контейнеров, удалите сетевое ограничение. Например, удалите частные конечные точки реестра или удалите/измените правила общего доступа к реестру.

Начиная с января 2021 года можно разрешить доступ к реестру с сетевыми ограничениями из некоторых доверенных служб.

Связанные ссылки

Расширенный поиск проблем

Если в реестре задана коллекция журналов ресурсов, просмотрите журнал ContainterRegistryLoginEvents. В этом журнале хранятся события проверки подлинности и состояния, включая входящий идентификатор и IP-адрес. Запросите журнал о сбоях проверки подлинности в реестре.

Связанные ссылки

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

Если проблема не решена, воспользуйтесь следующими вариантами.