wake-up-neo.net

`docker-credential-gcloud` nicht im System PATH

Nach den neuesten Updates für gcloud und Docker kann ich nicht auf Bilder in meinem Google Container-Repository zugreifen. Wenn ich lokal: gcloud auth configure-docker gemäß den Anweisungen nach dem Aktualisieren von gcloud laufe, erhalte ich die folgende Meldung:

WARNING: `docker-credential-gcloud` not in system PATH.
gcloud's Docker credential helper can be configured but it will not work until this is corrected.
gcloud credential helpers already registered correctly.

Wenn which docker-credential-gcloud ausgeführt wird, wird docker-credential-gcloud not found zurückgegeben.

Ich habe keine anderen gcloud-bezogenen Pfadprobleme und für das Leben von mir kann ich nicht herausfinden, wie man docker-credential-gcloud in path installiert/hinzugefügt. Folgendes habe ich installiert (gezeigt über 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

Ich habe auch Docker CE Version 18.03.0-ce-mac60 (23751).

Hier ist mein $ PATH: /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

Ich habe auch source /usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/path.zsh.inc auf original gcloud install ausgeführt.

23
ZaxR

Hinweis : Alle unten angegebenen docker-credential-gcr können durch docker-credential-gcloud ersetzt werden. Ich denke es sind nur verschiedene Versionen von gcloud, ich könnte mich irren.

Ich habe auch Homebrew Cask verwendet, um gcloud zu installieren. Ich habe docker-credential-gcr mit installiert 

$ gcloud components install docker-credential-gcr

Und wie du gesagt hast, hat dir which docker-credential-gcr nichts gegeben.

Also habe ich which gcloud ausgeführt, um herauszufinden, dass es in /usr/local/bin einen symbolischen Link zu gcloud gibt. Dieser Symlink wird von Homebrew erstellt, wenn Sie gcloud an erster Stelle installiert haben. Nun wurde docker-credential-gcr nicht von Homebrew, sondern von gcloud selbst installiert, daher gibt es keinen Symlink.

Ich rief readlink /usr/local/bin/gcloud an und fand heraus, dass gcloud in /usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/bin/ installiert ist.

Dann:

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

Dort sollte docker-credential-gcr angezeigt werden.

Ich habe es einfach mit /usr/local/bin verlinkt:

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

Dann renne:

$ docker-credential-gcr configure-docker

Es sollte gelingen.

27
Xiwen Li

Ich habe nie einen Weg gefunden, das docker-credential-gcloud-Problem direkt zu lösen, aber das folgende brachte mich wieder zum Laufen. WARNUNG: Mit dem folgenden Befehl werden alle vorhandenen Docker-Images gelöscht und eine Reihe von gcloud-Dienstprogrammen installiert:

  1. gcloud components install docker-credential-gcr
  2. Starten Sie das Terminal vollständig neu
  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. Starten Sie das Terminal vollständig neu.
2
ZaxR

Es scheint wirklich etwas mit dem Homebrew Cask zu sein. Ich habe das Fass deinstalliert und dann das Google Cloud SDK erneut installiert, indem Sie die Tar-Kugel manuell herunterladen und das Installationsskript wie dort beschrieben ausführen.

Nun ist docker-credential-gcloud in meinem Pfad:

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

Ich bekam das Problem, als ich versuchte, SSH von Google Cloud Build in eine Engine VM Instanz zu integrieren, also hatte ich

steps:
- name: 'gcr.io/cloud-builders/gcloud'
  args: ['compute', 'ssh',
         '--project', '$PROJECT_ID',
         '--zone', 'asia-southeast1-b',
         '--strict-Host-key-checking=no',
         '[email protected]',
         '--command' ,'sh start.sh'

Mein start.sh

#!/bin/sh

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

docker pull gcr.io/aaa/bbbc/cccc

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

Das Problem war How to set PATH when running a ssh command?

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

0
vanduc1102