GCP: Невозможно извлечь docker образов из нашего реестра частных контейнеров GCP на экземплярах виртуальной машины Ubuntu / Debian - PullRequest
3 голосов
/ 23 января 2020

Я пытаюсь извлечь контейнер docker из нашего частного реестра контейнеров GCP на обычном экземпляре виртуальной машины (т.е. ubuntu-1904), работающем в Google Cloud, но я получаю следующую ошибку:

user@test ~ $ sudo docker pull example.io/docker-dev/name:v01

Error response from daemon: 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

Я следовал этим инструкциям, т.е. выполнил команду gcloud auth configure-docker, которая выводит сообщение об успехе.

Однако при повторном запуске команды docker pull я получаю точно такую ​​же ошибку.

Пара дополнительных тестов, которые могут помочь обеспечить обратную связь:

  • Если я извлекаю из другого реестра, он работает (например, docker run hello-world извлекает и запускает образ hello-world)
  • Я протестировал ту же команду (docker pull example.io/docker-dev/name:v01) на своем локальном компьютере (Ma c) вместо экземпляра vm и отлично работает.
  • Я также создал экземпляры vm и включаю опцию «Развернуть образ контейнера на этом экземпляре виртуальной машины», предоставляя адрес контейнера (example.io/docker-dev/name:v01), и также работает. Однако я не хочу использовать эту опцию, потому что она автоматически выбирает загрузочный диск «Оптимизированный для контейнера», который я предпочитаю не использовать из-за ограничений

Вопрос : Почему я не могу извлечь docker изображений из моего личного реестра контейнеров на виртуальной машине Ubuntu o Debian, хотя docker, кажется, очень хорошо работает, извлекая изображения из других репозиториев (docker концентратор)?

Ответы [ 2 ]

1 голос
/ 23 января 2020

Я сделал это вчера. Просто запустите gcloud auth configure-docker, затем запустите

VERSION=2.0.0
OS=linux  # or "darwin" for OSX, "windows" for Windows.
ARCH=amd64  # or "386" for 32-bit OSs, "arm64" for ARM 64.

После этого вы можете загрузить docker -credential-gcr

wget "https://github.com/GoogleCloudPlatform/docker-credential-gcr/releases/download/v${VERSION}/docker-credential-gcr_${OS}_${ARCH}-${VERSION}.tar.gz"

Затем запустите

tar cvzf --to-stdout ./docker-credential-gcr_linux_amd64-2.0.0.tar.gz /usr/bin/docker-credential-gcloud && sudo chmod +x /usr/bin/docker-credential-gcloud

И наконец запустите

gcloud auth print-access-token | docker login -u oauth2accesstoken --password-stdin https://gcr.io

Теперь вы сможете вытащить вас изображение:)

0 голосов
/ 25 января 2020

Если вы запускаете gcloud auth configure- docker, информация об аутентификации сохраняется в вашем личном каталоге. Когда вы затем запускаете sudo docker pull example.io/docker-dev/name:v01, он ищет информацию об аутентификации в каталоге root и ничего там не находит.

Вы должны запустить с или без sudo.

...