90 votes

`docker-credential-gcloud` n'est pas dans le PATH du système

Après les dernières mises à jour de gcloud et docker, je ne parviens plus à accéder aux images de mon dépôt de conteneurs Google. Localement, lorsque j'exécute la commande : gcloud auth configure-docker comme indiqué après la mise à jour de gcloud, je reçois le message suivant :

AVERTISSEMENT : `docker-credential-gcloud` n'est pas dans le PATH système.
Le gestionnaire d'authentification Docker de gcloud peut être configuré mais ne fonctionnera pas tant que ceci ne sera pas corrigé.
Les gestionnaires d'authentification de gcloud sont déjà correctement enregistrés.

L'exécution de la commande which docker-credential-gcloud renvoie docker-credential-gcloud introuvable.

Je n'ai pas d'autres problèmes de chemin relatifs à gcloud et je n'arrive pas du tout à trouver comment installer/ajouter docker-credential-gcloud au chemin. Voici ce que j'ai installé (affiché via gcloud version) :

Google Cloud SDK 197.0.0
beta 2017.09.15
bq 2.0.31
container-builder-local
core 2018.04.06
docker-credential-gcr
gsutil 4.30

J'ai également Docker CE Version 18.03.0-ce-mac60 (23751).

Voici mon $PATH : /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

J'ai également exécuté la commande source /usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/path.zsh.inc lors de l'installation initiale de gcloud.

0 votes

Comment avez-vous installé gcloud? docker-credential-gcloud devrait normalement être co-localisé avec gcloud lui-même dans le même dossier sur votre chemin.

0 votes

Aussi, si vous avez déjà docker-credential-gcr, vous pouvez continuer à l'utiliser à la place, en supposant que docker-credential-gcr configure-docker fonctionne sans incident...

0 votes

Il semblerait que la seule étape manquante était de fermer complètement le terminal et de le redémarrer... erreur stupide. Merci d'avoir examiné cela :)

100voto

Xiwen Li Points 413

Avis: Tous les docker-credential-gcr ci-dessous peuvent être remplacés par docker-credential-gcloud. Je pense que ce sont juste différentes versions de gcloud, je pourrais me tromper.

J'ai utilisé Homebrew Cask pour installer gcloud aussi. J'ai installé docker-credential-gcr avec

$ gcloud components install docker-credential-gcr

Et ensuite comme vous l'avez dit, which docker-credential-gcr ne vous a rien donné.

Alors j'ai exécuté which gcloud pour trouver un lien symbolique vers gcloud dans /usr/local/bin. Ce lien symbolique est créé par Homebrew lorsque vous avez installé gcloud en premier lieu. Maintenant docker-credential-gcr n'a pas été installé par Homebrew mais par gcloud lui-même, donc il n'y a pas de lien symbolique.

J'ai appelé readlink /usr/local/bin/gcloud et découvert que gcloud est installé dans /usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/bin/.

Ensuite:

$ ls /usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/bin

Vous devriez y voir docker-credential-gcr répertorié ici.

Je l'ai simplement lié à /usr/local/bin:

$ ln -s \
    /usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/bin/docker-credential-gcr \
    /usr/local/bin/

Ensuite exécutez:

$ docker-credential-gcr configure-docker

Cela devrait réussir.

8 votes

Cette réponse a presque fonctionné pour moi, mais nécessitait une modification. L'étape de liaison symbolique semblait contenir une erreur de syntaxe/obsolescence. Elle faisait référence à docker-credential-gcr au lieu de docker-credential-gcloud. Mettre à jour cette étape comme indiqué ci-dessous a fonctionné pour moi. $ ln -s /usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk‌​/bin/docker-credenti‌​al-gcloud /usr/local/bin/

0 votes

Merci Jumand d'avoir remarqué cela. C'était une simple erreur de frappe. Je vais la corriger.

0 votes

Je viens de vérifier. Sur ma machine, il s'agit de docker-credential-gcr. Et j'ai exécuté gcloud components list docker-credential-gcloud n'est pas là. Je ne sais pas ce qui se passe.

4voto

ZaxR Points 1332

N'ai jamais trouvé de moyen de résoudre directement le problème avec docker-credential-gcloud, mais ce qui suit m'a permis de redémarrer. AVERTISSEMENT : ce qui suit va supprimer toutes vos images docker existantes et installer diverses utilités gcloud :

  1. gcloud components install docker-credential-gcr,

  2. Redémarrez complètement le terminal

  3. docker-credential-gcr configure-docker.

  4. screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty

  5. umount /var/lib/docker/overlay2

  6. rm -rf /var/lib/docker

  7. Redémarrez complètement le terminal.

0 votes

En exécutant la déclaration 3, nous avons reçu cet avertissement. Aucune inquiétude? "...AVERTISSEMENT : Impossible d'exécuter docker version : statut de sortie 1 C'est normal si docker n'est pas installé, ou si dockerd est inaccessible..."

0 votes

Je ne me souviens pas d'avoir rencontré cela, mais la réponse acceptée me semble bien plus logique que celle-ci je pense

3voto

Tobias Ernst Points 713

La nouvelle version de google-cloud-sdk n'a plus docker-credential-gcloud mais seulement docker-credential-gcr. D'autre part, l'un de mes packages python demandait toujours docker-credential-gcloud.

La solution a été de créer un lien symbolique de docker-credential-gcloud vers docker-credential-gcr:

ln -s /chemin/vers/google-cloud-sdk/bin/docker-credential-gcr /usr/local/bin/docker-credential-gcloud

ls -l /usr/local/bin | grep docker devrait maintenant afficher :

...
docker-credential-gcloud -> /chemin/vers/google-cloud-sdk/bin/docker-credential-gcr
...

1voto

anothernode Points 2604

Il semble vraiment y avoir quelque chose avec Homebrew Cask. J'ai désinstallé le cask puis réinstallé le Google Cloud SDK en téléchargeant manuellement le fichier tar et en exécutant le script d'installation empaqueté tel que décrit ici.

Maintenant docker-credential-gcloud est dans mon chemin :

$ which docker-credential-gcloud
/Users/moritz/google-cloud-sdk/bin/docker-credential-gcloud

0 votes

Cela a fonctionné pour moi. Pour l'amour de dieu, je ne pouvais pas trouver l'exécutable et j'allais cloner et exécuter le dépôt. Après l'extraction, exécutez : ./google-cloud-sdk/bin/gcloud init puis ./google-cloud-sdk/bin/gcloud components install docker-credential-gcr puis ajoutez simplement le dossier bin à votre $PATH

0voto

vanduc1102 Points 1972

J'ai rencontré le problème lorsque j'ai essayé de me connecter en SSH depuis Google Cloud Build vers une instance Engine VM, donc j'ai

steps:
- name: 'gcr.io/cloud-builders/gcloud'
  args: ['compute', 'ssh',
         '--project', '$PROJECT_ID',
         '--zone', 'asia-southeast1-b',
         '--strict-host-key-checking=no',
         'username@instance-1',
         '--command' ,'sh start.sh'

Mon start.sh

#!/bin/sh

echo "Démarré : $(date --iso-8601=seconds)"

docker pull gcr.io/aaa/bbbc/cccc

echo "Terminé : $(date --iso-8601=seconds)"

Le problème était Comment définir le PATH lors de l'exécution d'une commande ssh?

https://unix.stackexchange.com/questions/332532/how-to-set-path-when-running-a-ssh-command

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X