推送Docker容器时,Google Container Registry访问被拒绝

我试图推动我的docker容器到谷歌容器registry,使用本教程 ,但是当我运行

gcloud docker push b.gcr.io/my-bucket/image-name 

我得到的错误:

 The push refers to a repository [b.gcr.io/my-bucket/my-image] (len: 1) Sending image list Error: Status 403 trying to push repository my-bucket/my-image: "Access denied." 

我找不到任何更多的解释(没有-D, – gcloud auth list ,– gcloud auth list参数被识别), gcloud auth listgcloud auth list docker info告诉我,我连接到这两个服务。

任何我失踪?

我看到这个,但间歇性的基础上。 例如,我可能会得到拒绝的错误:请求“/ v2 / ….”中的“最新”权限被拒绝,但是当再次尝试时会起作用。

有没有人遇到这个?

对我来说,我忘了gcloud中加上gcloud (我想知道gcloud如何validation):

 $ gcloud docker push <image> 

使用gsutil检查ACL以确保您有权写入存储桶:

 $ gsutil acl get gs://<my-bucket> 

你需要检查你正在使用的帐户是在哪个组(“所有者”,“编辑”,“观众”等)

编辑 :我最近经历了一个非常类似的问题,正如@lampis在他的文章中提到的,这是因为当我创build虚拟机时,正确的权限范围并没有被设置。 不幸的是,一旦虚拟机已经创build,目前没有办法改变范围,所以你必须删除虚拟机(确保磁盘设置为自动删除!),然后用正确的范围重新创build虚拟机('compute-rw' ,'storage-rw'似乎就足够了)。 这不需要很长时间;-)。

请参阅此处的--scopes部分: https : --scopes

如果您使用的是Docker 1.7.0,那么他们将如何处理身份validation,这会影响正在使用gcloud dockergcloud docker docker login

请确保您使用的是最新版本的gcloud: gcloud components update

到目前为止,这似乎影响了gcloud dockergcloud docker docker-compose和其他读取/写入Dockervalidation文件的工具。

希望这有助于。

同样的问题在这里https://cloud.google.com/tools/container-registry/#access_denied的疑难解答部分不是很有帮助&#x3002; 我有Docker和GCloud全面更新。 不知道还有什么要做。

顺便说一句,我试图推动“gcr.io”。

固定。 我在计算引擎中使用虚拟机作为我的开发机器,看起来我没有在存储中给它足够的权限。

当您创buildGoogle Cloud VM实例时,请确保它具有足够的访问权限。

选项1

在身份和API访问下,select允许完全访问所有云API

在这里输入图像说明

选项2(推荐)

在身份和API访问下,select为每个API设置访问权限 ,然后select读取写入存储。

在这里输入图像说明

我有访问被拒绝的问题,我解决了它与创build使用标签的新形象:

 docker tag IMAGE_WITH_ACCESS_DENIED gcr.io/my-project/my-new-image:test 

之后,我可以推它到容器registry:

 gcloud docker -- push gcr.io/my-project/my-new-image:test