You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Azure DevOps代理在不同租户的ACR间共享镜像

跨Azure租户ACR共享镜像的实现方案

方案1:ACR原生跨租户镜像同步(推荐)

利用Azure容器注册表的镜像同步功能直接完成跨租户镜像复制,无需代理中转,是最高效的方式。

配置步骤:

  • 在dev ACR中,为prod租户的托管标识(或prod ACR对应的服务主体)分配AcrPull权限,允许prod侧拉取dev ACR的镜像;
  • 在prod ACR中创建同步任务,指定源镜像路径为devacr.azurecr.io/[镜像名]:[版本],目标路径为prod ACR的对应地址;
  • 设置触发规则:可选择当dev ACR推送新镜像时自动同步,或手动/定时触发;
  • 触发任务后,验证prod ACR中是否已生成同步后的镜像。

方案2:通过现有自托管代理池中转复制

如果无法使用ACR原生同步,可借助已有的双租户代理池完成镜像拉取-推送流程:

操作步骤:

  1. 权限配置:
    • 给dev托管标识分配dev ACR的AcrPull权限,给prod托管标识分配prod ACR的AcrPush权限;
    • 给prod托管标识额外分配dev ACR的AcrPull权限(不建议在生产环境开启dev ACR匿名拉取);
  2. 流水线编排:
    • 用dev代理池拉取dev ACR的镜像:docker pull devacr.azurecr.io/[镜像名]:[版本];
    • 切换到prod代理池,重新标记镜像为prod ACR路径:docker tag devacr.azurecr.io/[镜像名]:[版本] prodacr.azurecr.io/[镜像名]:[版本];
    • 推送标记后的镜像到prod ACR:docker push prodacr.azurecr.io/[镜像名]:[版本];
  3. 注意事项:
    • 确保代理节点有足够磁盘空间存储镜像;
    • 流水线中需严格校验镜像版本,避免同步错误版本。

方案3:Azure存储中转(备选)

若以上两种方式受限,可通过跨租户存储账户中转镜像文件:

操作步骤:

  • 在dev租户,用代理将镜像导出为tar包:docker save devacr.azurecr.io/[镜像名]:[版本] -o [镜像名]-[版本].tar;
  • 将tar包上传至配置了跨租户权限的Azure Blob存储(给prod托管标识分配StorageBlobDataContributor权限);
  • 在prod租户,用代理下载tar包并导入prod ACR:
    docker load -i [镜像名]-[版本].tar
    docker tag [镜像名]:[版本] prodacr.azurecr.io/[镜像名]:[版本]
    docker push prodacr.azurecr.io/[镜像名]:[版本]
    

内容的提问来源于stack exchange,提问作者Krzysztof Madej

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 13:04:53