레지스트리 로그인 문제 해결

이 문서는 Azure Container Registry에 로그인할 때 발생할 수 있는 문제를 해결하는 데 도움이 됩니다.

증상

다음 중 하나 이상을 포함할 수 있습니다.

  • docker login, az acr login 또는 둘 다를 사용하여 레지스트리에 로그인할 수 없습니다.
  • 레지스트리에 로그인할 수 없으며 unauthorized: authentication required 또는 unauthorized: Application not registered with AAD 오류가 발생합니다.
  • 레지스트리에 로그인할 수 없으며 Azure CLI 오류 Could not connect to the registry login server가 표시됩니다.
  • 이미지를 푸시하거나 끌어올 수 없으며 Docker 오류 unauthorized: authentication required가 표시됩니다.
  • az acr login을 사용하여 레지스트리에 액세스할 수 없으며 CONNECTIVITY_REFRESH_TOKEN_ERROR. Access to registry was denied. Response code: 403. Unable to get admin user credentials with message: Admin user is disabled. Unable to authenticate using AAD or admin login credentials. 오류가 발생합니다.
  • Azure Kubernetes Service, Azure DevOps 또는 다른 Azure 서비스에서 레지스트리에 액세스할 수 없습니다.
  • 레지스트리에 액세스할 수 없고 Error response from daemon: login attempt failed with status: 403 Forbidden 오류가 표시됩니다. - 레지스트리로 네트워크 문제 해결 참조
  • Azure Portal에서 레지스트리 설정에 액세스하거나 보거나 Azure CLI를 사용하여 레지스트리를 관리할 수 없습니다.

원인

  • Docker가 사용자 환경에 제대로 구성되지 않았습니다. - 솔루션
  • 레지스트리가 없거나 이름이 올바르지 않습니다. - 솔루션
  • 레지스트리 자격 증명이 유효하지 않습니다. - 솔루션
  • 레지스트리 공용 액세스가 사용하지 않도록 설정되었습니다. 레지스트리의 공용 네트워크 액세스 규칙에서 액세스 방지 - 솔루션
  • 푸시, 끌어오기 또는 Azure Resource Manager 작업에 대한 자격 증명이 승인되지 않았습니다. - 솔루션
  • 자격 증명이 만료되었습니다. - 솔루션

추가 진단

az acr check-health 명령을 실행하여 레지스트리 환경의 상태에 대한 자세한 정보를 얻고 선택적으로 대상 레지스트리에 액세스합니다. 예를 들어, Docker 구성 오류 또는 Microsoft Entra 로그인 문제를 진단합니다.

명령 예제는 Azure 컨테이너 레지스트리의 상태 확인을 참조하세요. 오류가 보고되면 오류 참조 및 다음 섹션에서 권장 솔루션을 검토하세요.

ACR에서 AKS 클러스터로 이미지를 가져오지 못하는 경우 AKS 지원 문서의 지침을 따릅니다.

참고 항목

일부 인증 또는 권한 부여 오류는 레지스트리 액세스를 방해하는 방화벽 또는 네트워크 구성이 있는 경우에도 발생할 수 있습니다. 레지스트리로 네트워크 문제 해결을 참조하세요.

잠재적 해결 방법

Docker 구성 확인

대부분의 Azure Container Registry 인증 흐름에는 로컬 Docker 설치가 필요하므로 이미지 푸시 및 끌어오기 등의 작업을 위해 레지스트리를 사용하여 인증할 수 있습니다. 사용자 환경에서 Docker CLI 클라이언트 및 디먼(Docker 엔진)이 실행 중인지 확인합니다. Docker 클라이언트 버전 18.03 이상이 필요합니다.

관련 링크:

올바른 레지스트리 이름 지정

docker login을 사용하는 경우 레지스트리의 전체 로그인 서버 이름(예: myregistry.azurecr.io)을 제공합니다. 소문자만 사용해야 합니다. 예시:

docker login myregistry.azurecr.io

Microsoft Entra ID로 az acr login을 사용하는 경우 먼저 Azure CLI에 로그인한 다음 레지스트리의 Azure 리소스 이름을 지정합니다. 리소스 이름은 myregistry(도메인 접미사 없음)와 같이 레지스트리가 작성될 때 제공되는 이름입니다. 예시:

az acr login --name myregistry

관련 링크:

레지스트리에 액세스할 자격 증명 확인

시나리오에 사용하는 자격 증명의 유효성을 검사하거나 레지스트리 소유자가 제공한 자격 증명의 유효성을 검사합니다. 가능한 문제는 다음과 같습니다.

  • Active Directory 서비스 주체를 사용하는 경우 Active Directory 테넌트에서 올바른 자격 증명을 사용해야 합니다.
    • 사용자 이름 - 서비스 주체 애플리케이션 ID(클라이언트 ID라고도 함)
    • 암호 - 서비스 주체 암호(클라이언트 암호라고도 함)
  • Azure Kubernetes Service 또는 Azure DevOps와 같은 Azure 서비스를 사용하여 레지스트리에 액세스하는 경우 서비스에 대한 레지스트리 구성을 확인합니다.
  • Docker 디먼을 사용하지 않고 레지스트리 로그인을 사용하도록 설정하는 --expose-token 옵션과 함께 az acr login을 실행한 경우 사용자 이름 00000000-0000-0000-0000-000000000000으로 인증해야 합니다.
  • 레지스트리가 익명 끌어오기 액세스로 구성된 경우 이전 Docker 로그인에서 저장된 기존 Docker 자격 증명은 익명 액세스를 차단할 수 있습니다. 레지스트리에서 익명 끌어오기 작업을 시도하기 전에 docker logout을 실행합니다.

관련 링크:

레지스트리에 액세스할 수 있도록 자격 증명에 권한이 있는지 확인

자격 증명과 연결된 레지스트리 권한(예: 레지스트리에서 이미지를 끌어오는 AcrPull Azure 역할 또는 이미지를 푸시하는 AcrPush 역할)을 확인합니다.

Azure CLI를 사용하여 포털 또는 레지스트리 관리에서 레지스트리에 액세스하려면 Azure Resource Manager 작업을 수행할 최소한 Reader 역할 또는 이와 동등한 권한이 필요합니다.

포털을 통해 레지스트리 액세스를 허용하도록 사용 권한이 최근에 변경된 경우 오래된 브라우저 캐시 또는 쿠키를 방지하려면 브라우저에서 incognito 또는 프라이빗 세션을 시도해야 할 수 있습니다.

사용자 또는 레지스트리 소유자는 구독에서 역할 할당을 추가하거나 제거할 수 있는 권한을 보유해야 합니다.

관련 링크:

자격 증명이 만료되지 않았는지 확인

토큰 및 Active Directory 자격 증명은 정의된 기간 후에 만료되어 레지스트리 액세스를 방지합니다. 액세스를 사용하도록 설정하려면 자격 증명을 다시 설정하거나 다시 생성해야 할 수 있습니다.

  • 레지스트리 로그인을 위해 개인 AD ID, 관리 ID 또는 서비스 주체를 사용하는 경우 AD 토큰은 3시간 후에 만료됩니다. 레지스트리에 다시 로그인합니다.
  • 만료된 클라이언트 암호로 AD 서비스 주체를 사용하는 경우 구독 소유자 또는 계정 관리자는 자격 증명을 다시 설정하거나 새 서비스 주체를 생성해야 합니다.
  • 리포지토리 범위 토큰을 사용하는 경우 레지스트리 소유자가 암호를 다시 설정하거나 새 토큰을 생성해야 할 수 있습니다.

관련 링크:

고급 문제 해결

레지스트리에서 리소스 로그의 수집이 사용하도록 설정된 경우 ContainerRegistryLoginEvents 로그를 검토합니다. 이 로그는 들어오는 ID와 IP 주소를 포함하여 인증 이벤트와 상태를 저장합니다. 로그에서 레지스트리 인증 실패를 쿼리합니다.

관련 링크:

다음 단계

여기에서 문제를 해결하지 않으면 다음 옵션을 참조하세요.