web-dev-qa-db-de.com

gcloud docker Push-Ergebnisse in "denied: Token-Austausch für Projekt 'gcp-project-id-example' fehlgeschlagen."

Ich habe gcloud auth login, gcloud auth configure-docker, gcloud components install docker-credential-gcr, gcloud config set project gcp-project-id-example ausgeführt. 

Ich habe schon früher auf dieses Repository geschoben, also bin ich ein bisschen überrascht, dass es jetzt nicht funktioniert? Ich habe mich mit gcloud auth login authentifiziert und mein Benutzer hat volle Editorberechtigungen.

Sudo gcloud docker -- Push eu.gcr.io/gcp-project-id-example/pipelinebuild:latest
WARNING: `gcloud docker` will not be supported for Docker client versions above 18.03.

As an alternative, use `gcloud auth configure-docker` to configure `docker` to
use `gcloud` as a credential helper, then use `docker` as you would for non-GCR
registries, e.g. `docker pull gcr.io/project-id/my-image`. Add
`--verbosity=error` to silence this warning: `gcloud docker
--verbosity=error -- pull gcr.io/project-id/my-image`.

See: https://cloud.google.com/container-registry/docs/support/deprecation-notices#gcloud-docker

The Push refers to repository [eu.gcr.io/gcp-project-id-example/pipelinebuild]
09a1efc2708d: Preparing
484c62332bc0: Preparing
737446294222: Preparing
5330921097a0: Preparing
898d09fcad4e: Preparing
8ebe2c7c93e3: Waiting
2d360789868b: Waiting
43c7850e5ceb: Waiting
212ad79ba733: Waiting
b12c0a65bf50: Waiting
2ec89235b54b: Waiting
770a49082d40: Waiting
2a4ee56ebd9d: Waiting
f38582ca1d15: Waiting
3cc68fcb53a4: Waiting
577d10d964a3: Waiting
96e5efb05969: Waiting
aae94198c5bb: Waiting
9e5b0f110abc: Waiting
bddf843523ce: Waiting
6ab9447934c9: Waiting
9cc1209e0dce: Waiting
072f13fb321e: Waiting
0926f7bf84b3: Waiting
cdb414de0edf: Waiting
eceffb9b1d52: Waiting
6219baf3e782: Waiting
c9189dccc6a7: Waiting
93715b5af77e: Waiting
032237575276: Waiting
5f70bf18a086: Waiting
0d81735d8272: Waiting
982549bd6b32: Waiting
8698b31c92d5: Waiting
denied: Token exchange failed for project 'gcp-project-id-example'. Caller does not have permission 'storage.buckets.get'. To configure permissions, follow instructions at: https://cloud.google.com/container-registry/docs/access-control

Ich habe auch versucht:

docker login -u _json_key --password-stdin https://eu.gcr.io < aysc.json:

WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

Erhalten Sie aber immer noch dasselbe Verhalten mit dem gcloud docker -- Push ... oder nur dem docker Push ....


Ich habe gerade ein brandneues GCP-Projekt von Grund auf erstellt und ich bekomme immer noch dasselbe Verhalten. Ich denke, etwas muss auf meinem System neu konfiguriert werden.

Warum erhalte ich diesen Fehler?

6

Wenn Sie gcloud auth configure-docker als normaler Benutzer ausführen, wird eine Konfigurationsdatei in ~/.docker/config.json gespeichert. Diese Datei wird später nicht mehr verwendet, wenn Sie über den Benutzer root oder Sudo...

So ist eine einfache Umgehung Sudo -u $USER docker Push gcr.io/example/example:latest

1

Nach dem Erstellen und Herunterladen von keyfile.json Exportiere ich GOOGLE_APPLICATION_CREDENTIALS an den Speicherort der Datei

export GOOGLE_APPLICATION_CREDENTIALS=/var/lib/jenkins/gcp/keyfile.json

das ist, was ich getan habe, das für mich gearbeitet hat:

docker login -u _json_key -p "`cat ${GOOGLE_APPLICATION_CREDENTIALS}`" https://gcr.io

ich hoffe es hilft 

3
Maoz Zadok

Ich bezweifle, dass das Problem bei Sudo liegt. Ich konnte "docker Push" für gcr.io/some-registry/some-image ausführen, ohne Sudo zu verwenden. Dann konnte ich plötzlich nicht mehr den gleichen "Docker-Push" -Befehl ausführen und bekam den Befehl: "Token-Austausch für mein-gcp-Projekt ist fehlgeschlagen.

1
Gilbert L

Anscheinend gibt es einige Probleme bei der Verwendung von Sudo (die ich für den Zugriff auf Docker auf meinem Computer benötige).

Funktionierte gut, wenn direkt von root aus gelaufen ... Also wahrscheinlich ein Bug.

Ich denke, dass dies durch den Cache des vorherigen Dienstkontos mit demselben Namen verursacht wurde (siehe hier https://github.com/kubernetes/kubernetes/issues/34395 ).

0

Führen Sie diesen Befehl aus, um das Token erneut zu aktivieren.

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

mit freundlicher Genehmigung

0
Gautam Khurana