向Artifact Registry推送镜像时遭遇403 Forbidden错误求助
向Google Cloud Artifact Registry推送镜像时遇403 Forbidden错误排查
问题详情
执行docker push <repo-tag>命令向Artifact Registry推送镜像时,触发如下错误:
failed to authorize: failed to fetch anonymous token: unexpected status from GET request to https://
-docker.pkg.dev/v2/token?scope=repository%3A %2F %2Fpkg%3Apull&scope=repository%3A %2F %3Apull%2Cpush&service= -docker.pkg.dev: 403 Forbidden
已确认信息:
- 当前登录账号为项目所有者,理论具备推送权限
- 已完成
gcloud auth login授权,gcloud auth print-access-token可正常返回令牌 - 向Docker Hub推送镜像无异常,排除Docker本身问题
排查方向及解决步骤
1. 配置Docker关联Google Cloud认证凭据
gcloud auth login仅完成了账号在gcloud工具中的授权,但Docker并未自动同步该认证信息。需执行以下命令将Artifact Registry仓库地址加入Docker认证配置:
gcloud auth configure-docker <region>-docker.pkg.dev
替换<region>为你的实际仓库区域,执行后Docker会在推送时自动使用gcloud的认证令牌。
2. 校验Artifact Registry仓库权限绑定
即使是项目所有者,也需确认仓库的权限设置是否正确:
- 检查项目IAM中,你的账号是否被分配了
Artifact Registry Writer(或Owner等包含推送权限的角色) - 进入Artifact Registry仓库的权限页面,确认你的账号被明确授予
push权限
3. 确保令牌具备足够权限范围
若默认获取的令牌权限范围不足,可手动获取包含全平台权限的令牌,并配置Docker使用:
# 获取带全平台权限的令牌 gcloud auth print-access-token --scope=https://www.googleapis.com/auth/cloud-platform # 使用令牌登录Docker echo "<上面获取的令牌>" | docker login -u oauth2accesstoken --password-stdin <region>-docker.pkg.dev
4. 检查镜像标签格式是否正确
Artifact Registry的镜像标签必须符合固定格式:
<region>-docker.pkg.dev/<project-id>/<repo-name>/<image-name>:<tag>
确认你的<repo-tag>中没有重复的仓库名称、缺失项目ID等格式错误(错误日志中显示repository%3A<repo-name>%2F<repo-name>,可能存在路径重复问题)
内容的提问来源于stack exchange,提问作者noor soreti
相关产品推荐
相关产品推荐

