7

я стараюсь подтолкнуть мой Docker контейнер в контейнер реестра Google, используя this tutorial, но когда я бегудоступ Google Container реестра отказано при нажатии Docker контейнер

gcloud docker push b.gcr.io/my-bucket/image-name 

Я получаю ошибку:

The push refers to a repository [b.gcr.io/my-bucket/my-image] (len: 1) 
Sending image list 
Error: Status 403 trying to push repository my-bucket/my-image: "Access denied." 

Я не мог найти больше объяснений (нет -D, --debug, --verbose аргументы были признаны), gcloud auth list и docker info скажите мне, что я подключен к обеим службам.

Все, что мне не хватает?

ответ

2

Использование gsutil для проверки ACL, чтобы убедиться, что у вас есть разрешение на запись в ведре:

$ gsutil acl get gs://<my-bucket> 

Вам нужно проверить, к какой группе учетной записи используется в («владельцев», " редактора, "и т.д. зрительские)

EDIT: Я испытал очень подобную проблему к этому себе в последнее время и, как @lampis упоминает в своем посте, это потому, что правильные прицелы разрешения не были установлены, когда я создал VM, с которой я пытался вытолкнуть изображение. К сожалению, в настоящее время нет способа изменить области действия при создании виртуальной машины, поэтому вам необходимо удалить виртуальную машину (убедитесь, что диски настроены на автоматическое удаление!) И воссоздать виртуальную машину с правильными областями ('compute-rw' , 'storage-rw' кажется достаточным). Это не займет много времени ;-).

Смотрите --scopes раздел здесь: https://cloud.google.com/sdk/gcloud/reference/compute/instances/create

+0

вот в чем проблема: я в группе владельцев, а члены группы владельцев имеют права владельца на это ведро. Все еще доступ запрещен – hilnius

+0

И когда вы запускаете 'gcloud auth list', у владельца, на который вы ссылаетесь, определенно есть' (active) ', указанный против него? –

+0

Извините за задержку, SO не отправляет мне уведомления. Вы используете Docker 1.7.0? Docker сделал переломное изменение в 1.7.0 на то, как он выполняет аутентификацию, но вы должны попробовать «обновление компонентов gcloud». Мы также обновили документы, чтобы включить это также: https://cloud.google.com/tools/container-registry/#access_denied – mattmoor

1

Если вы используете Docker 1.7.0, был разрыв изменения в том, как они обрабатывают аутентификации, которая влияет на пользователей, которые используют смесь gcloud docker и docker login.

Убедитесь, что вы используете последнюю версию gcloud через: gcloud components update.

Пока это, кажется, влияет на gcloud docker, docker-compose и другие инструменты, которые читали/записывали файл авторизации Docker.

Надеюсь, это поможет.

+0

В зависимости от ОС вам необходимо соответствующим образом установить права пользователя. Это означает, что если вы используете 'gcloud' без' sudo', вам нужно убедиться, что вы также можете использовать команду 'docker' без' sodo'. См. [Здесь] (http://askubuntu.com/a/477554) для получения дополнительной информации, если вы используете ubuntu. – Randy

1

Такая же проблема здесь, раздел устранения неполадок от https://cloud.google.com/tools/container-registry/#access_denied был не очень полезен. У меня есть Docker и GCloud полностью обновлены. Не знаю, что еще делать.

BTW, я пытаюсь нажать «gcr.io».

Исправлено. Я использовал VM в вычислительном движке в качестве моей машины разработки и выглядел так, как будто я не дал ей достаточной мощности в Storage.

3

Для меня забыл предварять gcloud в линии (и мне было интересно, как docker бы проверить подлинность):

$ gcloud docker push <image> 
0

При создании вам экземпляр Google Cloud VM, убедитесь, что он имеет достаточно доступа к правой.

Вариант 1

Под идентификацией и API доступа, выберите Разрешить полный доступ ко всем Cloud API,.

enter image description here

Вариант 2 (рекомендуется)

Под идентификацией и API доступа, выберите доступа, установленного для каждого API и затем выберите Read Write для хранения.

enter image description here

3

Я вижу это, но на непостоянной основе. например Я могу получить отказ в ошибке: Permission denied для «последнего» из запроса «/ v2/....»., Но при повторном попытке он будет работать.

Неужели кто-нибудь еще испытывает это?

+0

В моем случае это, на мой взгляд, оказалось временным вопросом в нас-central1. –

1

У меня была такая же проблема с отказано в доступе и я решил его создать новое изображение, используя Tag:

docker tag IMAGE_WITH_ACCESS_DENIED gcr.io/my-project/my-new-image:test 

После того, что я мог PUSH Это в контейнерном реестра:

gcloud docker -- push gcr.io/my-project/my-new-image:test 
Смежные вопросы