无法将Docker映像推送到gcr.io

时间:2019-12-13 05:52:18

标签: docker google-cloud-platform google-kubernetes-engine google-container-registry

这是一个非常简单的要求。 我在Mac上准备了一个docker映像,并希望将其推送到GCR。 尝试了以下步骤。

gcloud auth configure-docker
docker login gcr.io
docker push gcr.io/[project-id]/gcloud:latest
The push refers to repository [gcr.io/[project-id]/gcloud]
0141ab2d5898: Retrying in 1 second
522a3d37badb: Retrying in 1 second
0b1ee8a19f71: Retrying in 1 second
0cb89ac95352: Retrying in 1 second
c27a33c2a613: Retrying in 2 seconds
1416f891501a: Waiting
2edebac67fd2: Waiting
cff7468ca6ac: Waiting
7d105a69bdfc: Waiting
8607e6c66303: Waiting
dc87e12495f4: Waiting
c3c5e6948ef3: Waiting
5f70bf18a086: Waiting
b2f56e492d5b: Waiting
861512eb6ef5: Waiting
876201329b4b: Waiting
unknown: Token exchange failed for project '[project-id]'. Bad Request.

有人可以在这个问题上提出建议吗?

3 个答案:

答案 0 :(得分:0)

您尝试使用gcloud auth activate-service-account [SERVICE_ACCOUNT]代替docker login gcr.io

我认为这是比docker login更好的方法。

答案 1 :(得分:0)

看看官方的guide并检查“开始之前”部分中的所有内容。

此外,您必须将注册表名称和图像名称添加为图像的标签。您可以找到更多详细信息herehere

答案 2 :(得分:0)

我在添加的前提条件中遇到了同样的问题,即注册表中还没有现有的映像。

如果尚无图像,则GCR存储后端(一个GCS存储桶)也将不存在。

确保该存储桶可由登录gcloud的用户创建。就我而言,有一个组织政策禁止多区域存储桶,这是GCR所需的存储桶类型。

您可以通过进入项目活动来检查这是否是问题的根本原因,在那里您将看到创建存储桶的失败。