6

我正在尝试将 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 config list => 项目 id 已设置
  3. 存储 api 在控制台中启用
  4. 如果我在 url 中使用项目名称,我会得到 403 Forbidden
  5. 如果我在 url 中使用项目 ID,我会得到“存储库不存在”
  6. gcloud auth list => 将所有者显示为活动的
  7. gcloud components update => 所有组件都是最新的。
4

2 回答 2

3

看起来问题在于(本地)docker标签不正确,标签是“项目名称”而不是“gcloud项目ID”,因此通过更改标签以包含项目推送工作。

于 2016-01-19T16:37:12.503 回答
3

我遇到了同样的问题,按照我完成的顺序解决它。

  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,令牌将与 root 帐户一起存储。)

然后docker push gcr.io/projetc_id/imagename根据How to push a docker image to a private repository使用

于 2016-02-05T10:41:06.507 回答