无法在Azure Container Registry中找到已推送镜像的问题咨询
问题描述
我已向Azure Container Registry推送了新的容器镜像,推送操作截图如下:

但推送完成后我无法在Azure Container Registry中找到该镜像,ACR仓库查询截图如下:
以下是本次构建推送操作使用的YAML流水线配置文件内容:
name: Dotnet Code Build and Push jobs: - job: Job_1 displayName: Agent job 1 pool: vmImage: ubuntu-18.04 steps: - checkout: self - task: Docker@0 displayName: Build an image inputs: azureSubscription: 'sc-***dp' azureContainerRegistry: loginServer: *****aksacr.azurecr.io id: "/subscriptions/4f76bb2f-c521-45d1-b311-b87bf**747ff/resourceGroups/eus-***dp-rg/providers/Microsoft.ContainerRegistry/registries/*****aksacr" imageName: ***dpacr.azurecr.io/ims-***dp/$(Build.Repository.Name):$(Build.BuildId) - task: Docker@2 displayName: Login to ACR inputs: command: login containerRegistry:'sc-***dp' - task: Docker@2 displayName: Push an image inputs: azureSubscription: 'sc-***dp' repository: ims-***dp azureContainerRegistry: '{"loginServer":"*****aksacr.azurecr.io", "id" : "/subscriptions/4f76bb2f-c521-45d1-b311-b87bf**747ff/resourceGroups/eus-***dp-rg/providers/Microsoft.ContainerRegistry/registries/*****aksacr"}' action: Push an image
问题根因
配置存在4处明确错误,直接导致镜像未被成功推送到目标ACR:
- 镜像仓库地址不匹配:构建步骤中
imageName配置的登录地址是***dpacr.azurecr.io,和目标ACR实际地址*****aksacr.azurecr.io不一致,构建出的镜像标签不属于目标ACR - YAML缩进语法错误:Docker@0构建任务中
azureContainerRegistry字段值为空,下属的loginServer、id字段没有正确缩进归属到该字段下,任务无法读取ACR配置信息 - YAML格式错误:Docker@2登录任务中
containerRegistry:'sc-***dp'冒号后缺少空格,会触发YAML解析错误,导致登录步骤实际未生效 - 推送步骤缺少镜像关联:Docker@2推送任务没有指定要推送的镜像标签、Dockerfile路径等核心参数,任务无法定位前序构建出的镜像文件,实际没有执行有效推送操作
修复方案
统一使用官方推荐的Docker@2版本任务完成全流程操作,不要混用已过时的Docker@0任务,修正后的配置如下:
name: Dotnet Code Build and Push jobs: - job: Job_1 displayName: Agent job 1 pool: vmImage: ubuntu-18.04 steps: - checkout: self - task: Docker@2 displayName: Login to ACR inputs: command: login containerRegistry: 'sc-***dp' - task: Docker@2 displayName: Build container image inputs: command: build repository: 'ims-***dp' dockerfile: '$(Build.SourcesDirectory)/Dockerfile' # 替换为你的Dockerfile实际相对路径 tags: '$(Build.BuildId)' - task: Docker@2 displayName: Push image to ACR inputs: command: push repository: 'ims-***dp' tags: '$(Build.BuildId)'
校验方式
重新运行流水线后,可通过两点确认推送结果:
- 查看Push任务的运行日志,确认存在manifest pushed、blob uploaded相关成功日志,无权限、找不到镜像类报错
- 进入ACR实例的门户页面,在「仓库」分类下找到
ims-***dp仓库,确认存在对应$(Build.BuildId)标签的镜像
内容的提问来源于stack exchange,提问作者SmartestVEGA
相关产品推荐
相关产品推荐

