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.
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.
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:
gcloud components install docker-credential-gcr
, docker-credential-gcr configure-docker
.screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.AMD64-linux/tty
umount /var/lib/docker/overlay2
rm -rf /var/lib/docker
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
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