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

部署至Cloud Run时无法从Artifact Registry拉取镜像

问题分析与解决方案

核心错误原因

  • 部署步骤的Builder镜像指定错误:你在部署Cloud Run的步骤中,name字段写的是'gcloud',Cloud Build会尝试从Docker Hub拉取这个镜像,但官方的gcloud工具镜像托管在Google的容器仓库,正确的地址是gcr.io/cloud-builders/gcloud。这就是你看到"pull access denied for gcloud"错误的直接原因。
  • 错误且多余的Docker登录步骤:执行docker login时你传入了完整的镜像路径(带镜像名和tag),但docker login的参数应该是仓库域名(如[REGION]-docker.pkg.dev)或仓库路径([REGION]-docker.pkg.dev/[projectId]/[repository]),而非具体镜像。另外,Cloud Build的服务账号默认已拥有Artifact Registry的操作权限,这个登录步骤完全没必要,甚至可能干扰后续操作。

修正后的cloudbuild.yaml

steps:
  # 构建容器镜像
  - name: 'gcr.io/cloud-builders/docker'
    args: ['build', '.', '-t', '[REGION]-docker.pkg.dev/[projectId]/[repository]/[image]:latest']
    # 注意:补全镜像路径中的斜杠,原配置中[REGION]-docker.pkg.dev后缺少/

  # 推送镜像到Artifact Registry
  - name: 'gcr.io/cloud-builders/docker'
    args: ['push', '[REGION]-docker.pkg.dev/[projectId]/[repository]/[image]:latest']

  # 部署到Cloud Run(使用正确的gcloud Builder镜像)
  - name: 'gcr.io/cloud-builders/gcloud'
    args:
      - 'run'
      - 'deploy'
      - 'REPLACE_WITH_SERVICE_NAME'
      - '--image'
      - '[REGION]-docker.pkg.dev/[projectId]/[repository]/[image]:latest'
      - '--region'
      - 'REPLACE_WITH_REGION'
      - '--platform'
      - 'managed'
      - '--allow-unauthenticated'

额外注意事项

  • 确保镜像路径中的占位符([REGION]、[projectId]、[repository]、[image])已替换为实际值,并且路径格式正确(域名和项目ID之间需要斜杠)。
  • 你的Cloud Build服务账号已配置roles/artifactregistry.reader和roles/artifactregistry.writer权限,这足够完成镜像推送和Cloud Run部署时的拉取操作,无需额外登录步骤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 04:05:17