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

从GCE实例拉取Artifact Registry镜像遭认证拒绝,求解决方案

解决GCE虚拟机拉取GCR镜像的未认证问题

假设你已经为GCE实例关联的服务账号添加了Artifact Registry Reader(旧版GCR对应Storage Object Viewer)权限,除此之外还需要完成以下操作:

1. 检查GCE实例的云API访问范围

  • 登录GCP控制台,找到目标GCE实例并进入编辑页面
  • 滚动到云API访问范围区域,确认Cloud Storage(或Artifact Registry)的访问范围设置为只读或完全,不能是禁用状态
  • 修改完成后重启实例使设置生效

2. 利用实例元数据获取凭证登录Docker

在GCE实例上无需使用本地的gcloud auth命令,直接通过实例内置的元数据服务获取服务账号凭证:

curl -s "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token" -H "Metadata-Flavor: Google" | jq -r '.access_token' | docker login -u oauth2accesstoken --password-stdin https://europe-west1-docker.pkg.dev

如果实例未安装jq,可改用awk解析:

curl -s "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token" -H "Metadata-Flavor: Google" | awk -F'"' '{print $4}' | docker login -u oauth2accesstoken --password-stdin https://europe-west1-docker.pkg.dev

3. 验证服务账号权限与身份

在实例上执行以下命令确认当前活跃账号为实例绑定的服务账号:

gcloud auth list

输出的活跃账号格式应为[实例服务账号名]@[项目ID].iam.gserviceaccount.com,随后测试权限是否生效:

gcloud artifacts repositories list --project=<你的项目ID> --location=europe-west1

若能正常列出仓库,说明权限已正确配置。

4. 确认镜像拉取地址的完整性

拉取镜像时必须使用控制台显示的完整地址,格式如下:

docker pull europe-west1-docker.pkg.dev/<你的项目ID>/<仓库名>/<镜像名>:latest

确保项目ID、仓库名、镜像名均无遗漏或拼写错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 13:58:12