gpt4 book ai didi

azure - 尝试从 azure devops 推送到 azure 容器注册表时请求访问被拒绝

转载 作者:行者123 更新时间:2023-12-02 19:22:02 25 4
gpt4 key购买 nike

当我尝试推送到我在“服务连接”中作为“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

构建工作正常,但是当它尝试推送图像时,我得到以下信息

[command]/usr/bin/docker push csym023container/csym023_api

The push refers to repository [docker.io/csym023container/csym023_api]

e7a7b94f6564: Preparing

....etc.....

2c6ac8e5063e: Waiting

denied: requested access to the resource is denied

[error]denied: requested access to the resource is denied

[error]The process '/usr/bin/docker' failed with exit code 1

[section]Finishing: Push services

full debug output

看起来它出于某种原因试图推送到 docker.io,我确实读过 here您需要登录 URL,我确实尝试过,但随后出现有关授权的错误,我不知道如何在管道文件中实现该错误。

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

The push refers to repository [csym023.azurecr.io/csym023_api]

f29018588af0: Preparing

...etc ...

cc967c529ced: Waiting

unauthorized: authentication required

[error]unauthorized: authentication required

[error]The process '/usr/bin/docker' failed with exit code 1

[section]Finishing: Push services

full debug output

最佳答案

感谢详细的日志分享。

基于您的 YAML 脚本和错误日志:

enter image description here

看来您确实通过将容器注册表值指定为变量来自行配置任务。这应该就是为什么它后来连接到 docker.io 而不是 ***.azurecr.io 的原因。

因为服务器无法知道正确的目标容器而被误导。此外,Azure 容器注册表的标识不适用于 docker 容器。此时服务器提示错误:denied:请求访问资源被拒绝

<小时/>

如果使用我们在 YAML 中提供的配置面板,在选择相应的订阅连接后,将自动显示Azure 容器注册表名称:

enter image description here

查看azureContainerRegistry的值:

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

您可以看到,我们提供了准确的目标 Azure 容器注册表名称及其唯一 ID。此时,服务器就不会混淆应该连接到哪台服务器了。同时它可以生成正确的 token ,该 token 将在稍后的操作(推送等)中使用。

<小时/>

解决方案在这个 thread您发现,对于 azureContainerRegistry,@Ste 将其值指定为 ***.azurecr.io。这和我上面提到的方式类似。不确定为什么在应用@Ste 的解决方案时遇到未经授权错误。

@Ste 的解决方案没有问题。只是,当你自己指定container值时,生成的token,有很大的不确定性,在后续需要使用时会被验证为不合理.

这就是为什么我建议您在尝试应用我的方法时将该解决方案注释为临时

关于azure - 尝试从 azure devops 推送到 azure 容器注册表时请求访问被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58867554/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com