【发布时间】:2019-06-27 01:15:34
【问题描述】:
将我的映像推送到 Container Registry 时遇到权限问题。我得到的错误是
denied: Token exchange failed for project '<my project>'. Caller does not have permission 'storage.buckets.create'. To configure permissions, follow instructions at: https://cloud.google.com/container-registry/docs/access-control
我按照说明一步一步做的,这是我所做的:
gcloud auth configure-docker
我的 docker config.json 现在包含:
{
"auths": {},
"credHelpers": {
"gcr.io": "gcloud",
"us.gcr.io": "gcloud",
"eu.gcr.io": "gcloud",
"asia.gcr.io": "gcloud",
"staging-k8s.gcr.io": "gcloud",
"marketplace.gcr.io": "gcloud"
},
"credsStore": "wincred",
"HttpHeaders": {
"User-Agent": "Docker-Client/18.09.0 (windows)"
},
"stackOrchestrator": "swarm"
}
标记我的图片
docker tag my/image eu.gcr.io/<my project>/my-image:latest运行
docker push eu.gcr.io/<my project>/my-image:latest(出现错误)
这是我的设置
- Windows 10(10.0.17134 Build 17134)
- Docker 版本 18.09.0,构建 4d60db4
- Google Cloud SDK 232.0.0、bq 2.0.40、核心 2019.01.27、gsutil 4.35
我已检查我的活动帐户是否正确(gcloud auth login 指向正确的登录电子邮件)并且该帐户具有所有者权限。我也试过专门为帐户添加存储管理员权限,但无济于事。
请帮我推一下我的图片!
【问题讨论】:
-
嗯 :-( 这对你有用吗?我不确定为什么这不起作用,因为你似乎遵循了正确的过程。我从来没有在 Windows 上使用过这个,想知道什么时候
config.json配置错误。使用此帐户可以创建 GCS 存储桶吗?(gsutil mb -p <my project> gs://<some bucket name>)。您可以在显式 docker 登录后推送吗?(cloud.google.com/container-registry/docs/…) -
我可以使用
gsutils mb命令创建新的存储桶,是的。但你只是给我指出了一个有趣的方向。我管理两个 Google Cloud 帐户。虽然我使用账户 1 登录并且可以在该账户下创建存储桶,但我只是成功地将我的镜像(在使用相应的项目名称标记后)推送到另一个账户下的 Container Registry。我假设使用gcloud auth login切换帐户将处理所有事情,但似乎并非如此。你(或其他人)能帮我理解如何纠正这个问题吗? -
您可能使用多个 Google 帐户登录。要列出有凭据的帐户,请使用
gcloud auth list。这将用星号指示当前选择的帐户。要在有凭据的帐户之间切换,请使用gcloud config set account <email-address>。 -
gcloud auth list显示两个帐户,星号指向正确的帐户。我很困惑为什么我能够将 docker push 推送到未选择的帐户。 -
你的配置我不清楚。您不会推送到账户,而是推送到由账户管理的项目中的存储桶。从工作场景向后工作以查看问题所在可能对您有所帮助。
标签: docker gcloud google-container-registry