При попытке отправить образ докера в Google Cloud Registry с помощью Google Cloud Cli я получаю сообщение об ошибке:
denied: обмен токенами для проекта завершился неудачно. В доступе отказано.
Я выполнил следующие шаги:
- Установлена оболочка Google Cloud sdk
- Загрузил ключевой файл json для моей учетной записи IM
- Установите аутентификацию с помощью следующей команды:
google-cloud-sdk/bin/gcloud auth activate-service-account --key-file <path_to_json_file>
- Выполненная ниже команда для входа в систему:
docker login -u _json_key --password-stdin https://asia.gcr.io < path_to_json_file
Создал и пометил образ докера.
Пытался отправить изображение в 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 уже включен.
Версия Docker, которую я использую, - это Docker версии 18.09.2, сборка 6247962.
Я использую машину Windows, на которой установлен облачный интерфейс командной строки Google. Так что все операции выполняются только от вдов.
То же самое я пробовал на образе Gitlab «Docker: latest» в моем конвейере Gitlab. Ошибка одинакова в обоих местах (мой локальный компьютер с Windows и конвейер Gitlab)
roles/storage.admin
, чтобы иметь возможность отправлять сообщения в GCR (проверьте документы здесь: cloud.google.com/container-registry/docs/access-control). - person norbjd   schedule 23.03.2019roles/storage.admin
роль. Но я понимаю ваше замешательство. В любом случае, если у вашего пользователя есть эта роль, проблема должна исходить откуда-то еще. Можете ли вы попробовать отправить изображение из Cloud Shell своему пользователю, чтобы проверить, не связано ли оно с вашей локальной средой? - person norbjd   schedule 23.03.2019