Azure Dev Ops에서 Azure Container Registry로 푸시하려고 할 때 요청 액세스가 거부되었습니다.

앤드류 딘

'containerregistry'로 '서비스 연결'에서 연결 한 Azure 컨테이너 레지스트리로 푸시하려고하면이 오류가 계속 발생합니다.

trigger:
- master

resources:
- repo: self

variables:
  tag: '$(Build.BuildId)'
  azureContainerRegistry: containerregistry
  azureSubscriptionEndpoint: resourcemanager

stages:
- stage: Build
  displayName: Build image
  jobs:  
  - job: Build
    displayName: Build
    pool:
      vmImage: 'ubuntu-latest'
    steps:
    - task: DockerCompose@0
      displayName: Build services
      inputs:
        action: Build services
        azureSubscriptionEndpoint: $(azureSubscriptionEndpoint)
        azureContainerRegistry: $(azureContainerRegistry)
        dockerComposeFile: docker-compose.yml
        projectName: $(Build.Repository.Name)
        qualifyImageNames: true
        additionalImageTags: $(Build.BuildId)
    - task: DockerCompose@0
      displayName: Push services
      inputs:
       action: Push services
       azureSubscriptionEndpoint: $(azureSubscriptionEndpoint)
       azureContainerRegistry: $(azureContainerRegistry)
       dockerComposeFile: docker-compose.yml
       projectName: $(Build.Repository.Name)
       qualifyImageNames: true
       additionalImageTags: $(Build.BuildId)
       includeLatestTag: true

빌드는 잘 작동하지만 이미지를 푸시하려고하면 다음과 같은 결과가 나타납니다.

[명령] / usr / bin / docker push csym023container / csym023_api

푸시는 저장소 [docker.io/csym023container/csym023_api]를 참조합니다.

e7a7b94f6564 : 준비 중

....기타.....

2c6ac8e5063e : 대기 중

거부 됨 : 리소스에 대한 요청 된 액세스가 거부되었습니다.

[오류] 거부 됨 : 리소스에 대한 요청 된 액세스가 거부되었습니다.

[오류] '/ usr / bin / docker'프로세스가 종료 코드 1로 인해 실패했습니다.

[섹션] 마무리 : 푸시 서비스

전체 디버그 출력

어떤 이유로 docker.io 밀어하려고 것처럼, 내가 읽은 않았다 보인다 여기 당신은 내가 시도했던 로그인 URL을 필요로하지만 나는 파이프 라인 파일에서 구현하는 방법을 모르는 권한에 대한 오류를 얻을 수 .

[명령] / usr / bin / docker push csym023.azurecr.io/csym023_api

푸시는 저장소 [csym023.azurecr.io/csym023_api]를 참조합니다.

f29018588af0 : 준비 중

... 등 ...

cc967c529ced : 대기 중

권한 없음 : 인증 필요

[오류] 승인되지 않음 : 인증 필요

[오류] '/ usr / bin / docker'프로세스가 종료 코드 1로 인해 실패했습니다.

[섹션] 마무리 : 푸시 서비스

전체 디버그 출력

Merlin Liang-MSFT

자세한 로그 공유에 감사드립니다.

YAML 스크립트 및 오류 로그를 기반으로 :

여기에 이미지 설명 입력

컨테이너 레지스트리 값을 변수로 지정하여 작업을 직접 구성한 것 같습니다 . 이것이 나중에 연결되는 docker.io대신 연결되는 이유 ***.azurecr.io입니다.

서버가 올바른 대상 컨테이너를 알 수 없어서 오해 할 수 있기 때문입니다. 또한 Azure Container Registry에 대한 ID는 Docker 컨테이너에 사용할 수 없습니다. 이때 서버는 다음 오류를 표시합니다.denied: requested access to the resource is denied


YAML에서 제공 한 구성 패널을 사용하는 경우 해당 구독 연결 을 선택하면 Azure Container 레지스트리 이름이 자동으로 표시됩니다 .

여기에 이미지 설명 입력

의 가치를보십시오 azureContainerRegistry:

{"loginServer":"merlin1115.azurecr.io", "id" : "/subscriptions/daae*****9d072825/resourceGroups/{resource group}/providers/Microsoft.ContainerRegistry/registries/merlin1115"}

정확히 대상 Azure Container Registry 이름과 고유 ID를 제공한다는 것을 알 수 있습니다. 이때 서버는 연결해야하는 서버를 혼동하지 않습니다. 한편, 나중에 작업 (푸시 등) 중에 사용될 올바른 토큰생성 할 수 있습니다 .


이의 솔루션 스레드 당신이 발견은 azureContainerRegistry, @Ste 그 값으로 지정 ***.azurecr.io. 이것은 위에서 언급 한 방식과 유사합니다. @Ste의 솔루션을 적용 할 때 Unauthorized 오류가 발생한 이유를 잘 모르겠습니다 .

@Ste의 솔루션에는 문제가 없습니다. 다만, 컨테이너 값을 직접 지정하면 생성 된 토큰 은 많은 불확실성을 가지게되는데, 이는 이후 작업에서 사용해야 할 때 불합리한 것으로 확인 될 것입니다.

이것이 내 방식을 적용하려고 할 때 임시 솔루션에 주석을 달 것을 제안하는 이유 입니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관