使用OCI上下文构建Azure容器注册表(ACR)失败:无法下载上下文
问题分析与解决方案
你的错误本质是对az acr build的OCI上下文用法理解有误:
oci://链接作为build上下文时,Azure ACR期望指向的是OCI Artifact(比如打包的源代码、Helm Chart、OCI格式的配置包等),而非普通的容器镜像。你当前用的是容器镜像的OCI链接,这不符合工具的上下文要求,所以会触发下载失败的错误。
正确实现方式
根据你的需求(基于另一个ACR的镜像构建新镜像),正确的做法是:
- 编写Dockerfile,在其中通过
FROM指令引用目标镜像:FROM mycontainerregistry.azurecr.io/dotnetapp:latest # 后续添加你的构建步骤,比如安装依赖、复制代码等 - 执行
az acr build命令时,将本地或代码仓库作为上下文,指定Dockerfile路径:az acr build -r mycontainerregistry -f Dockerfile .
若确实需要使用OCI上下文(用于传递构建源码/配置)
如果你的场景是要把构建上下文打包成OCI Artifact存储到ACR,再通过oci://链接引用,需按以下步骤操作:
- 将本地构建上下文(比如源码目录)打包为OCI Artifact并推送到ACR:
az acr pack build -r mycontainerregistry --artifact-type oci-image --context . oci://mycontainerregistry.azurecr.io/build-context:v1 - 之后再用这个OCI Artifact的链接作为
az acr build的上下文:az acr build -r mycontainerregistry oci://mycontainerregistry.azurecr.io/build-context:v1
额外验证步骤
执行以下命令确认ACR中存在正确的OCI Artifact(而非普通镜像):
az acr artifact list -r mycontainerregistry
内容的提问来源于stack exchange,提问作者Philip Young
相关产品推荐
相关产品推荐

