`docker-credential-gcloud` не в системе PATH

После последних обновлений gcloud и docker я не могу получить доступ к изображениям в моем репозитории контейнеров google. Локально, когда я запускаю: gcloud auth configure-docker в соответствии с инструкциями после обновления gcloud, я получаю следующее сообщение:

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

Запуск which docker-credential-gcloud возвращает docker-credential-gcloud not found.

У меня нет других проблем, связанных с gcloud, и для жизни я не могу понять, как установить/добавить docker-credential-gcloud в путь. Вот то, что я установил (показано через 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

У меня также есть Docker CE Version 18.03.0-ce-mac60 (23751).

Здесь мой $PATH: /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

Я также запускал source /usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/path.zsh.inc в исходной установке gcloud.

Ответ 1

Примечание: все docker-credential-gcr ниже docker-credential-gcr можно заменить на docker-credential-gcloud. Я думаю, что это просто разные версии gcloud, я могу ошибаться.

Я также использовал Homebrew Cask для установки gcloud. Я установил docker-credential-gcr с

$ gcloud components install docker-credential-gcr

А потом, как вы сказали, which docker-credential-gcr ничего вам не дал.

Поэтому я запустил which gcloud чтобы найти символическую ссылку на gcloud в /usr/local/bin. Эта символическая ссылка создана Homebrew, когда вы сначала установили gcloud. Теперь docker-credential-gcr был установлен не Homebrew, а самим gcloud, поэтому символической ссылки нет.

Я позвонил в readlink/usr/local/bin/gcloud и узнал, что gcloud установлен в /usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/bin/.

Затем:

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

Там вы должны увидеть список docker-credential-gcr.

Я просто связал его с /usr/local/bin:

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

Затем запустите:

$ docker-credential-gcr configure-docker

Это должно преуспеть.

Ответ 2

Никогда не нашел способ прямого разрешения проблемы docker-credential-gcloud, но следующее снова запустило меня. ПРЕДУПРЕЖДЕНИЕ: следующее будет удалять все существующие изображения докеров и устанавливать кучу утилит gcloud:

  • 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
  • Полностью перезагрузите терминал.

Ответ 3

Кажется, что-то с Homebrew Cask. Я удалил бокс, а затем переустановил Google Cloud SDK вручную загрузил tar-мяч и выполнил пакетную установку script, как описано там.

Теперь docker-credential-gcloud находится на моем пути:

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

Ответ 4

У меня возникла проблема при попытке выполнить SSH из Google Cloud Build в экземпляр виртуальной машины Engine, поэтому

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'

Мой start.sh

#!/bin/sh

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

docker pull gcr.io/aaa/bbbc/cccc

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

Вопрос был в том, How to set PATH when running a ssh command?

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