J'ai exécuté gcloud auth login
, gcloud auth configure-docker
, gcloud components install docker-credential-gcr
, gcloud config set project gcp-project-id-example
.
J'ai déjà poussé dans ce référentiel, donc je suis un peu surpris que cela ne fonctionne pas maintenant? J'ai authentifié avec gcloud auth login
et mon utilisateur dispose d'autorisations complètes de l'éditeur.
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
J'ai aussi essayé:
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
Mais vous obtenez toujours le même comportement avec le gcloud docker -- Push ...
ou simplement le docker Push ...
.
Je viens de créer un tout nouveau projet GCP à partir de zéro et j'obtiens toujours le même comportement. Je pense que quelque chose doit être reconfiguré sur mon système.
Pourquoi est-ce que je reçois cette erreur?
Lorsque vous exécutez gcloud auth configure-docker
en tant qu'utilisateur normal, il enregistre un fichier de configuration dans ~/.docker/config.json
. Ce fichier n'est pas utilisé par la suite lors de l'exécution via l'utilisateur root
ou Sudo
...
Donc, un moyen facile de contourner le problème est Sudo -u $USER docker Push gcr.io/example/example:latest
Après avoir créé et téléchargé le fichier keyfile.json
export GOOGLE_APPLICATION_CREDENTIALS=/var/lib/jenkins/gcp/keyfile.json
c'est ce que j'ai fait qui a fonctionné pour moi:
docker login -u _json_key -p "`cat ${GOOGLE_APPLICATION_CREDENTIALS}`" https://gcr.io
j'espère que ça aide
Je doute que le problème est avec Sudo. Je pouvais faire "Push Docker" à gcr.io/some-registry/some-image sans utiliser Sudo. Puis, tout à coup, je n’ai pas pu exécuter la même commande "Docker Push" et j’ai reçu le message "refusée: échange de jetons pour my-gcp-project.
Il semble y avoir quelques problèmes avec l’utilisation de Sudo
(dont j’ai besoin pour accéder au menu fixe sur ma machine).
A bien fonctionné lorsqu'il est exécuté directement à partir de la racine ... Donc, probablement un bogue.
Je pense que cela est dû au cache du compte de service précédent portant le même nom (voir ici https://github.com/kubernetes/kubernetes/issues/34395 ).