Невозможно получить доступ к реестру приватных контейнеров с виртуальной машины gcloud - PullRequest
1 голос
/ 25 марта 2020

Я пытаюсь извлечь контейнер из частного реестра gcloud из виртуальной машины gcloud, используя служебную учетную запись для аутентификации. ВМ и реестр находятся в одном проекте. Независимо от того, что я делаю, я всегда получаю Error response from daemon: unauthorized.

XXX@sandbox:~$ gcloud auth configure-docker gcr.io
WARNING: Your config file at [/home/XXX/.docker/config.json] contains these credential helper entries:

{
  "credHelpers": {
    "gcr.io": "gcloud"
  }
}
Adding credentials for: gcr.io
gcloud credential helpers already registered correctly.
XXX@sandbox:~$ sudo docker pull gcr.io/MY-PROJECT-ID/MY-IMAGE:latest
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

У учетной записи службы есть роль администратора хранилища для корзины хранения gcr.io:

enter image description here

Виртуальная машина имеет доступ к хранилищу в режиме чтения-записи:

enter image description here

Виртуальная машина была остановлена, перезапущена несколько раз , Docker обновлен:

XXX@sandbox:~$ which docker
/usr/bin/docker
XXX@sandbox:~$ sudo docker version
Client: Docker Engine - Community
 Version:           19.03.8
 API version:       1.40
 Go version:        go1.12.17
 Git commit:        afacb8b7f0
 Built:             Wed Mar 11 01:26:02 2020
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.8
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.17
  Git commit:       afacb8b7f0
  Built:            Wed Mar 11 01:24:36 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.2.13
  GitCommit:        7ad184331fa3e55e52b890ea95e65ba581ae3429
 runc:
  Version:          1.0.0-rc10
  GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

Я могу заставить его работать, используя JSON ключевой файл, но не с рекомендуемым gcloud auth configure-docker. Я предполагаю, что есть еще один недокументированный переключатель или разрешение, которое мне нужно щелкнуть, но я просто не вижу.

1 Ответ

1 голос
/ 25 марта 2020

Вы можете передать учетную запись или impersonate-service-account команде:

   gcloud auth configure-docker --account
   gcloud auth configure-docker ----impersonate-service-account

Когда вы запускаете с помощью sudo, вы меняете среду и он не будет аутентифицирован для gcr.io, таким образом, не авторизован.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...