推送docker容器时,Google容器注册表访问被拒绝

hil*_*ius 13 docker google-cloud-platform gcloud google-container-registry

我尝试使用本教程将我的docker容器推送到google容器注册表,但是当我运行时

gcloud docker push b.gcr.io/my-bucket/image-name
Run Code Online (Sandbox Code Playgroud)

我收到错误:

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."
Run Code Online (Sandbox Code Playgroud)

我找不到任何解释(没有-D, - debug, - verbose参数被识别),gcloud auth listdocker info告诉我我已连接到这两个服务.

我缺少什么?

Yuc*_*ong 6

在创建Google Cloud VM实例时,请确保其具有足够的访问权限.

选项1

在Identity和API访问下,选择允许对所有Cloud API的完全访问权限.

在此输入图像描述

选项2(推荐)

在Identity和API访问下,选择为每个API设置访问权限,然后选择Read Write for Storage.

在此输入图像描述


Ric*_*eld 5

使用gsutil检查ACL以确保你有写权限斗:

$ gsutil acl get gs://<my-bucket>
Run Code Online (Sandbox Code Playgroud)

您需要检查您所使用的帐户所在的组(“所有者”,“编辑者”,“查看者”等)。

编辑:最近我自己也遇到了一个非常类似的问题,正如@lampis在他的帖子中提到的,这是因为在创建要从中推送映像的VM时未设置正确的权限范围。不幸的是,创建虚拟机后,目前无法更改范围,因此您必须删除虚拟机(确保将磁盘设置为自动删除!),然后使用正确的范围(“ compute-rw”)重新创建虚拟机。 ,“ storage-rw”似乎足够)。没多长时间;-)。

请参阅以下--scopes部分:https : //cloud.google.com/sdk/gcloud/reference/compute/instances/create


mat*_*oor 1

如果您使用的是 Docker 1.7.0,它们处理身份验证的方式发生了重大变化,这会影响混合使用gcloud docker和 的用户docker login

确保您通过以下方式使用最新版本的 gcloud:gcloud components update

到目前为止gcloud docker,这似乎影响了docker-compose和其他正在读取/写入 Docker 身份验证文件的工具。

希望这有帮助。