gcloud docker 推送 403 禁止访问

gcloud docker push 403 Forbidden

我正在尝试将 docker 图片推送到 eu.gcr.io,但我遇到了 403 Forbidden

gcloud docker push  eu.gcr.io/<projectname>/<image>:latest                                                                  
The push refers to a repository [eu.gcr.io/<projectname>/<image>] (len: 1)
663cd9de01fe: Preparing
Post https://eu.gcr.io/v2/w<projectname>/<image>/blobs/uploads/: token auth attempt for registry: https://eu.gcr.io/v2/token?account=_token&scope=repository%3A<projectname>%2F<image>3Apush%2Cpull&service=eu.gcr.io request failed with status: 403 Forbidden

我检查过

  1. curl https://eu.gcr.io/v1/_ping => 有效
  2. gcloud 配置列表 => 项目 ID 已设置
  3. 存储api 已在控制台
  4. 中启用
  5. 如果我在 url 中使用项目名称,我会得到 403 Forbidden
  6. 如果我在 url 中使用项目 ID,我会得到 "Repository does not exist"
  7. gcloud auth list => 将所有者显示为活跃
  8. gcloud components update => 所有组件都是最新的。

看起来问题是(本地)docker 标签不正确,标签是 "project name" 而不是 "gcloud project id" 所以通过更改标签以包含项目推作品。

我遇到过同样的问题,按我的顺序解决。

  1. 按照说明重命名图像
  2. 将用户添加到 docker 组(对于 docker 登录很重要)
  3. 使用docker登录令牌https://cloud.google.com/container-registry/docs/auth
docker login -e 1234@5678.com -u _token -p "$(gcloud auth print-access-token)" https://gcr.io 

(如果使用sudo docker,令牌将与根帐户一起存储。)

然后根据

使用docker push gcr.io/projetc_id/imagename