Доступ к ресурсу запрещен при отправке контейнера в реестр контейнеров Azure - PullRequest
0 голосов
/ 29 марта 2019

При отправке контейнеров в частный реестр контейнеров Azure с помощью Docker Compose конвейер AzOre DevOps возвращает следующую ошибку:

Pushing [контейнер] ([реестр] / [приложение]: последний) ...

Толчок относится к хранилищу [docker.io/[registry]/[container]]

отказано: запрошенный доступ к ресурсу запрещен

Файл azure-pipeline.yml взят из примера Docker Compose, показанного в примере Microsoft Microservices eShopOnContainer, здесь :

variables:
azureContainerRegistry: myregistry
azureSubscriptionEndpoint: My Service Principle
...
task: DockerCompose@0
    displayName: Compose push customer API
    inputs:
        containerregistrytype: Azure Container Registry
        azureSubscriptionEndpoint: $(azureSubscriptionEndpoint)
        azureContainerRegistry: $(azureContainerRegistry)
        dockerComposeCommand: 'push [container]'
        dockerComposeFile: docker-compose.yml
        qualifyImageNames: true
        projectName: ""
        dockerComposeFileArgs: |
           TAG=$(Build.SourceBranchName)

Принцип обслуживания заключается в роли AcrPush .

1 Ответ

0 голосов
/ 01 апреля 2019

Решение должно быть явным с именем контейнера. Документация вводит в заблуждение, поскольку сначала говорится, что containerregistrytype - это Реестр контейнеров Azure по умолчанию. Далее в качестве значения azureContainerRegistry.

приводится Contoso .

Это неправильно. Вам необходимо явно указать для этого параметра значение «Сервер входа» в Azure. Поэтому реестр должен быть «contoso.azurecr.io». Таким образом, полный пример должен быть:

variables:
azureContainerRegistry: contoso.azurecr.io
azureSubscriptionEndpoint: Contoso
steps:
- task: DockerCompose@0
  displayName: Container registry login
  inputs:
      containerregistrytype: Azure Container Registry
      azureSubscriptionEndpoint: $(azureSubscriptionEndpoint)
      azureContainerRegistry: $(azureContainerRegistry)

Именно поэтому push-репо, на которое он ссылался, был на самом деле: docker.io (общедоступный концентратор докеров), так как он должен быть по умолчанию, что объясняет ошибку отказа в доступе.

...