无法将docker镜像推送到GCP注册表:拒绝:项目的令牌交换失败 拒绝访问

问题描述 投票:0回答:1

在尝试使用Google Cloud cli在Google Cloud Registry上推送泊坞窗图片时,我收到错误消息:

否认:令牌交换失败的项目。拒绝访问。

我按照以下步骤操作:

  1. 已安装Google云端sdk shell
  2. 下载了我的IM帐户的密钥json文件
  3. 使用以下命令设置验证:

google-cloud-sdk/bin/gcloud auth activate-service-account --key-file <path_to_json_file>

  1. 执行以下命令登录:

docker login -u _json_key --password-stdin https://asia.gcr.io < path_to_json_file

  1. 构建并标记了泊坞窗图像。
  2. 尝试使用以下命令将图像推送到GCR:

docker push "asia.gcr.io/$GCLOUD_PROJECT_ID/$IMAGE_NAME:latest"

我得到的结果如下:

The push refers to repository [asia.gcr.io/<my_project_id>/<my_image_name>]
1bd77e11e1bf: Preparing
b57c79f4a9f3: Preparing
d60e01b37e74: Preparing
e45cfbc98a50: Preparing
762d8e1a6054: Preparing

denied: Token exchange failed for project <my_project_id>. Access denied.

注意:1。我的GCR API已启用。

  1. 我正在使用的Docker版本是“Docker版本18.09.2,版本6247962”
  2. 我正在使用安装了Google云CLI的Windows机器。因此,所有操作仅从Widows执行。
  3. 我在我的Gitlab管道中尝试过Gitlab图像'Docker:latest'。两个地方的错误都是一样的(我的本地Windows机器和Gitlab管道)
docker google-cloud-platform gitlab gcloud google-container-registry
1个回答
0
投票

您不需要步骤#3,因为您正在验证Docker(而不是gcloud)以使用服务帐户的凭据。

它适用于Linux(Cloud Shell)实例;我假设GitLab使用Linux。我没试过Windows机器。

我建议您检查您是否指的是正确的服务帐户,密钥,项目等。如评论中所述,服务帐户需要> = roles/storage.admin

© www.soinside.com 2019 - 2024. All rights reserved.