Невозможно отправить образ докера в реестр GCP: отказано: обмен токеном не выполнен для проектаДоступ закрыт - PullRequest
0 голосов
/ 23 марта 2019

При попытке отправить изображение докера в облачный реестр Google с помощью облачного Google Cli, я получаю сообщение об ошибке:

отказано: обмен токеном не выполнен для проекта. Доступ запрещен.

Я выполнил следующие шаги:

  1. Установлен Google cloud sdk shell
  2. Скачал ключевой json-файл для моей учетной записи IM
  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. Я использую Windows-машину, на которой установлен облачный CLI Google. Так что все операции выполняются только из вдов.

  3. То же самое я попробовал на образе Gitlab 'Docker: последний' в моем конвейере Gitlab. Ошибка одинакова в обоих местах (мой локальный компьютер с Windows и Gitlab Pipeline)

1 Ответ

0 голосов
/ 24 марта 2019

Вам не нужен шаг № 3, потому что вы аутентифицируете Docker (не gcloud) для использования учетных данных учетной записи службы.

Это работает для меня на экземпляре Linux (Cloud Shell);Я предполагаю, что GitLab использует Linux.Я не пробовал с компьютера с Windows.

Я рекомендую вам проверить, что вы ссылаетесь на правильную учетную запись службы, ключ, проект и т. Д. Как указано в комментариях, учетная запись службы требует> = roles/storage.admin

...