推送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 list
和gcloud 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 docker
和gcloud docker
docker login
。
请确保您使用的是最新版本的gcloud: gcloud components update
。
到目前为止,这似乎影响了gcloud docker
, gcloud docker
docker-compose
和其他读取/写入Dockervalidation文件的工具。
希望这有助于。
同样的问题在这里https://cloud.google.com/tools/container-registry/#access_denied的疑难解答部分不是很有帮助。 我有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