在 Azure DevOps 管道中推送和映像到 Azure 容器注册表任务失败。以前的任务执行得很好,即。docker 镜像创建成功,登录 ACR 成功。但是推送任务失败,结果如下:
unauthorized: authentication required
[error]unauthorized: authentication required
[error]/usr/bin/docker failed with return code: 1
[section]Finishing: Push Docker image
Run Code Online (Sandbox Code Playgroud)
docker push 到给定的 acr 可以从本地命令行正常工作。
# Docker image
# Build a Docker image to deploy, run, or push to a container registry.
# Add steps that use Docker Compose, tag images, push to a registry, run an image, and more:
# https://docs.microsoft.com/azure/devops/pipelines/languages/docker
trigger:
- master
pool:
vmImage: 'Ubuntu-16.04'
variables:
imageName: 'renamed:$(build.buildId)'
azureSubscriptionEndpoint: Renamed
azureContainerRegistry: renamed.azurecr.io
steps:
- task: Docker@1
displayName: Build docker image
inputs:
command: Build an image
dockerFile: Dockerfile
imageName: $(imageName)
containerregistrytype: Azure Container Registry
azureSubscriptionEndpoint: $(azureSubscriptionEndpoint)
azureContainerRegistry: $(azureContainerRegistry)
- task: Docker@1
displayName: Login to container registry
inputs:
command: login
containerregistrytype: Azure Container Registry
azureSubscriptionEndpoint: $(azureSubscriptionEndpoint)
azureContainerRegistry: $(azureContainerRegistry)
dockerFile: Dockerfile
imageName: $(imageName)
- task: Docker@1
displayName: Push Docker image
inputs:
command: Push an image
containerregistrytype: Azure Container Registry
azureSubscriptionEndpoint: $(azureSubscriptionEndpoint)
azureContainerRegistry: $(azureContainerRegistry)
imageName: $(imageName)
Run Code Online (Sandbox Code Playgroud)
Pro*_*ton 15
我在将 docker 映像推送到Azure 容器注册表时遇到了这个问题。
我收到错误
未经授权:需要身份验证,请访问https://aka.ms/acr/authorization了解更多信息。
这是我修复它的方法:
我的用户已经拥有容器注册表的所有者角色,因此我有权推送和拉取映像。
问题是admin_userAzure 容器注册表中未启用该功能。
我所要做的就是启用管理员用户。这会生成username、password和password2。
接下来,您现在可以使用以下命令登录 Azure 容器注册表:
az acr login --name my-container-registry
Run Code Online (Sandbox Code Playgroud)
标记您的 docker 镜像
docker tag image-name:image-tag my-container-registry.azurecr.io/image-name:image-tag
Run Code Online (Sandbox Code Playgroud)
现在使用以下命令将映像推送到 Azure 容器注册表:
docker push my-container-registry.azurecr.io/image-name:image-tag
Run Code Online (Sandbox Code Playgroud)
就这样
我在 Azure DevOps 中使用 Azure 容器注册表服务连接时遇到了同样的问题。
解决方法是在创建 Docker Registry 服务连接时不选择“Azure Container Registry”,而是选择“其他”。然后在 Azure 门户中启用容器注册表上的管理员用户,并使用该凭据创建服务连接。
区分大小写的问题
\n我创建了一个 ACR 名称:blaH
我可以登录:az acr login -n blaH
\n\n在注册表名称中检测到大写字符。在 docker 命令中使用其服务器 url 时,为避免身份验证错误,请全部使用小写。
\n
\n登录成功
docker build -f Dockerfile -t blaH.azurecr.io/some-app:1.0 ..
\n\n未经授权:需要身份验证,请访问https://aka.ms/acr/authorization了解更多信息。
\n
切换为小写h,即docker build -f Dockerfile -t blah.azurecr.io/some-app:1.0 ..& 成功:
\n\n1.0:摘要:sha256:b1e6749eae625e6a3fca3eea36466530460e8cd544af67e88687139a37522ba6大小:1495
\n
注意:它甚至告诉我/我们,但我没有读它 \xe2\x80\x8d\xe2\x99\x82\xef\xb8\x8f,请参阅 上 CLI 中以黄色打印的警告acr login。
注 2:我在查看 azure 门户时偶然发现了这一点,并注意到login server全是小写:\n
| 归档时间: |
|
| 查看次数: |
6449 次 |
| 最近记录: |