Разрешение реестра контейнеров Google

Я пытаюсь отправить изображение докера в GCP, но все еще получаю эту ошибку:

unauthorized: You don't have the needed permissions to perform this operation, and you may have invalid credentials. To authenticate your request, follow the steps in: https://cloud.google.com/container-registry/docs/advanced-authentication

Я следую этому https://cloud.google.com/container-registry/docs/quickstart шаг за шагом, и все работает нормально, пока докер не нажмет

Это чистый проект GCP

Я уже пробовал:

  1. использовать gcloud в качестве помощника по учетным данным Docker: gcloud auth configure-docker
  2. переустановите Cloud SDK и gcloud init
  3. добавить роль администратора хранилища в мою учетную запись

Что я делаю не так?

Спасибо за любые предложения


person wujido    schedule 04.01.2020    source источник
comment
Я пытаюсь отправить образ докера в GCP, какую команду вы использовали для отправки образа докера (или что вы делали, если использовали графический интерфейс консоли GCloud, а не командную строку)?   -  person Jay Mody    schedule 04.01.2020
comment
@JayMody Я использую команду: docker push gcr.io/?PROJECT-ID›/ ‹CONTAINER-NAME›   -  person wujido    schedule 05.01.2020
comment
у вас это работает локально? не на облачной оболочке? вы выполнили вход в систему gcloud auth?   -  person Pievis    schedule 05.01.2020
comment
@Pievis Я сделал это локально. Я выполнил gcloud init, поэтому я вошел в систему (когда я запускаю gcloud auth list, мой аккаунт активен). Затем я создаю свой контейнер и помечаю его. Этот процесс описан в предоставленной ссылке, я следую за ней шаг за шагом. Но я не могу отправить его в Реестр контейнеров Google.   -  person wujido    schedule 05.01.2020
comment
После выполнения действий, описанных в предоставленной вами ссылке, я смог успешно отправить изображение с небольшими изменениями: я использовал команду входа в систему gcloud auth после команды gcloud auth configure-docker. Попробуйте и сообщите нам, сработало ли это, а если нет, в чем заключаются ошибки?   -  person Digil    schedule 06.01.2020
comment
Вам также может потребоваться обратиться к этой аналогичной ветке обсуждения. Также возможно, что в вашем кластере GKE или экземпляре GCE отсутствуют соответствующие области.   -  person Digil    schedule 06.01.2020
comment
@Digil Я снова пробую весь процесс с помощью входа в систему gcloud auth, и результат был таким же, как ошибка в моем исходном вопросе.   -  person wujido    schedule 07.01.2020
comment
Может быть хорошей идеей проверить, установлены ли области в ваших экземплярах виртуальной машины. ссылка описывает более подробно как использовать реестр контейнеров.   -  person Digil    schedule 08.01.2020


Ответы (1)


Если это может помочь тем, кто находится в той же ситуации, что и я:

  • Докер 19.03
  • Google Cloud SDK 288.0.0

Важно: мой пользователь не входит в группу пользователей Docker. Затем мне нужно добавить sudo перед любой командой докера

Когда gcloud и docker не используют один и тот же config.json

Когда я использую помощник по учетным данным gcloud:

gcloud auth configure-docker

он обновляет файл конфигурации JSON в моем $ HOME: [/home/{username}/.docker/config.json]. Однако при выходе и повторном входе в Docker CLI,

sudo docker login

Предупреждение показывает другой путь, который имеет смысл, поскольку я sudo-ed:

WARNING! Your password will be stored unencrypted in /root/.docker/config.json.

sudo везде

Чтобы исправить это, я проделал следующие шаги:

# Clear everything
sudo docker logout
sudo rm /root/.docker/config.json
rm /home/{username}/.docker/config.json

# Re-login
sudo docker login
sudo gcloud auth login --no-launch-browser # --no-launch-browser is optional

# Check both Docker CLI and gcloud credential helper are here
sudo vim /root/.docker/config.json

# Just in case
sudo gcloud config set project {PROJECT_ID}

Теперь я могу отправить свои образы Docker как в GCR, так и в Docker Hub

person Al-un    schedule 12.04.2020