'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로 인해 실패했습니다.
[섹션] 마무리 : 푸시 서비스
자세한 로그 공유에 감사드립니다.
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] 삭제
몇 마디 만하겠습니다