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

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

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.

Запуск 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.


comment
Как вы установили gcloud? docker-credential-gcloud обычно должен находиться вместе с самим gcloud в той же папке на вашем пути.   -  person jsand    schedule 11.04.2018
comment
Кроме того, если у вас уже есть docker-credential-gcr, вы можете продолжать использовать его вместо этого, предполагая, что docker-credential-gcr configure-docker работает без происшествий ...   -  person jsand    schedule 11.04.2018
comment
Похоже, моим единственным пропущенным шагом было полностью закрыть терминал и перезапустить ... глупая ошибка. Спасибо, что заглянули в это :)   -  person ZaxR    schedule 11.04.2018
comment
Я фактически установил docker-credential-gcr, потому что docker-credential-gcloud не был расположен вместе с gcloud. Все еще интересуюсь ответом, как это исправить ...   -  person ZaxR    schedule 11.04.2018
comment
Какой метод вы использовали для установки gcloud? Как ты его скачала?   -  person jsand    schedule 11.04.2018
comment
Похоже, что метод установки Homebrew не включает некоторые стандартные утилиты, которые включены в другие установки. Спасибо!   -  person jsand    schedule 11.04.2018
comment
Вы знаете, какими утилитами / есть ссылки, которыми вы можете поделиться? Какой способ установки вы рекомендуете?   -  person ZaxR    schedule 11.04.2018
comment
Я выполнил новую установку, следуя инструкциям на странице cloud.google.com/sdk/docs/quickstart -macos, и я вернулся к исходной точке. Ошибка хранилища учетных данных: StoreError ('docker-credential-gcr не установлен или недоступен в PATH'   -  person ZaxR    schedule 11.04.2018
comment
gcloud auth configure-docker теперь у вас работает? Вы использовали сценарий установки? Какой результат which gcloud?   -  person jsand    schedule 11.04.2018
comment
Вы используете docker с sudo? В этом случае вам также нужно запустить configure-docker как sudo.   -  person jsand    schedule 11.04.2018
comment
Завершился поиск недостающего шага с помощью github.com/docker/for-mac/issues / 1396. Тем не менее, требуется docker-credential-gcr. Да для gcloud auth configure-docker и which gcloud правильно указывает на то, куда я вручную поместил папку (в доме). Я использую докер без sudo.   -  person ZaxR    schedule 12.04.2018
comment
Отлично, рад, что вы нашли первопричину. Я предполагаю, что docker-credential-gcr выдавал вам ошибки, потому что каталог bin gcloud SDK был уничтожен во время вашей переустановки.   -  person jsand    schedule 12.04.2018
comment
Просто удалите .docker/config.json superuser.com/a/1411019/1238179   -  person Victor Barros    schedule 06.11.2020


Ответы (10)


Примечание: все 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 и обнаружил, что в /usr/local/bin есть символическая ссылка на gcloud. Эта символическая ссылка создается 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

Должно получиться.

person Xiwen Li    schedule 21.04.2018
comment
Этот ответ почти сработал для меня, но мне потребовалась настройка. В шаге символической ссылки, похоже, есть устаревшая / опечатка. Он ссылался на docker-credential-gcr вместо docker-credential-gcloud. Обновление этого шага, как показано ниже, сработало для меня. $ ln -s /usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/bin/docker-credential-gcloud /usr/local/bin/ - person jumand; 25.04.2018
comment
Спасибо, Джуманд, что это заметили. Это был чистый типаж. Я исправляю это. - person Xiwen Li; 26.04.2018
comment
Я только что проверил. На моей машине это docker-credential-gcr. И я запустил gcloud components list docker-credential-gcloud, которого нет. Я не знаю, что происходит. - person Xiwen Li; 26.04.2018
comment
@jumand - я думаю, что docker-credential-gcr - новый инструмент, а -gcloud - устаревший. См. cloud.google.com/container-registry/docs/. - person Maximilian; 03.05.2018
comment
для меня это было не в /usr/local/Caskroom/, а в /snap/ (с использованием ubuntu) - person Inbar Rose; 21.02.2019

Была такая же проблема в Windows, при запуске Docker с контейнерами Linux, движком Docker v19.03.8. Использование docker compose. Я не использую gcloud для своих файлов докеров ...

DT1001 dockerpycreds.errors.InitializationError: docker-credential-gcloud не установлен или недоступен в PATH

  1. Вариант 1. Отредактируйте файл конфигурации докера и удалите оттуда все записи gcloud.

    • Windows c:/Users/<your account>/.docker/config.json

    • Linux и MacOS ~/.docker/config.json

  2. Вариант 2. Перейдите в раздел «Устранение неполадок» -> «Восстановить заводские настройки по умолчанию».

После этого мой docker compose без проблем создавал контейнеры и запускал изображения.

person Milen    schedule 03.06.2020
comment
Мне пришлось сделать credHelpers пустым "credHelpers":{}. спасибо сработало для меня. - person Amir Chatrbahr; 05.02.2021
comment
Я также очистил "credHelpers":{}, как упоминал @ amir-chatrbahr, но он снова был заполнен. Я предполагаю, что это может быть связано с обновлением Docker Desktop или IntelliJ (где у меня ненастроенный плагин GCloud)? - person Dirk; 21.02.2021
comment
У меня была такая же проблема при попытке docker-compose build локально после удаления gcloud, поэтому после удаления обоих файлов все работало нормально: /usr/bin/docker-credential-gcloud и ~/.docker/config.json - person bzani; 07.04.2021

Так и не удалось найти способ решить проблему docker-credential-gcloud напрямую, но следующее заставило меня снова заработать. ВНИМАНИЕ: следующие действия удалят все ваши существующие образы докеров и установят несколько утилит gcloud:

  1. gcloud components install docker-credential-gcr,
  2. Полностью перезапустите терминал
  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. Полностью перезапустите терминал.
person ZaxR    schedule 11.04.2018
comment
При выполнении оператора 3 мы получили это предупреждение. Есть опасения? ... ПРЕДУПРЕЖДЕНИЕ: Невозможно выполнить docker version: статус выхода 1 Это ожидается, если docker не установлен или если dockerd не может быть достигнут ... - person Praxiteles; 27.07.2018
comment
Я не помню, чтобы встречал это, но принятый ответ имеет гораздо больше смысла, чем этот, я думаю - person ZaxR; 28.07.2018

В новой версии google-cloud-sdk есть только docker-credential-gcr, но не docker-credential-gcloud. С другой стороны, один из моих пакетов Python всегда запрашивал docker-credential-gcloud.

Решение заключалось в символической ссылке docker-credential-gcloud на docker-credential-gcr:

ln -s /path/to/google-cloud-sdk/bin/docker-credential-gcr /usr/local/bin/docker-credential-gcloud

ls -l /usr/local/bin | grep docker должен теперь напечатать:

...
docker-credential-gcloud -> /path/to/google-cloud-sdk/bin/docker-credential-gcr
...
person Tobias Ernst    schedule 13.12.2019

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

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

$ which docker-credential-gcloud
/Users/moritz/google-cloud-sdk/bin/docker-credential-gcloud
person anothernode    schedule 20.04.2018
comment
Это сработало для меня. Ради бога, я не смог найти исполняемый файл и собирался клонировать и запустить репо. После извлечения: ./google-cloud-sdk/bin/gcloud init, затем ./google-cloud-sdk/bin/gcloud components install docker-credential-gcr, затем просто добавьте корзину в свой $PATH - person asdfqwer; 15.10.2020

Обычно эта ошибка указывает на то, что ваша переменная $PATH была затерта пакетом или программой, которые вы недавно установили, поэтому Google Cloud SDK не может быть найден.

$PATH изменяется многими программами при установке путем изменения ~/.profile, ~/.bash_profile или ~/.bashrc или их эквивалентов, отличных от bash. При плохом $PATH Google Cloud SDK настроен в docker, но его нельзя рассматривать как исполняемый файл, поэтому мы получаем эту ошибку. Предполагается, что вы использовали Google Cloud SDK в прошлом, но если gcloud настроен с вашим докером, то, вероятно, вы это сделали. Не переустанавливайте gcloud и не отключайте его, он у вас уже есть в вашей системе, и это нормально.

Решение состоит в том, чтобы исправить $PATH, ничего не устанавливать.

echo $PATH

Это должен быть довольно длинный список каталогов, в которых находятся ваши файлы с разделителями :. Вы видите google-cloud-sdk/bin в строке? Неужели струна слишком коротка, учитывая все проблемы, с которыми вы столкнулись в своей жизни на этом компьютере? Вы используете NVM, но его нет? Используете Homebrew, но его нет? Попробуйте brew из командной строки, работает?

Если ответ отрицательный на любой из вышеперечисленных, проверьте файлы выше, чтобы увидеть, есть ли какие-либо новые записи внизу каждого, которые могли бы что-то сломать. Вы только что установили что-нибудь новое?

Что-то мешает вашему $PATH, и вам нужно выяснить, что это такое. Для меня это обычно связано с Anaconda Python с помощью команды conda init. Для вас это может быть nvm или что-то еще. Выясните, что это такое, и устраните проблему. Не начинайте с нового $PATH и не устанавливайте то же самое заново или не отключайте gcloud аутентификацию.

person rjurney    schedule 21.09.2020

На MacOS

Шаг 1:

Установите gcloud и docker-credential-gcr, следуя этому руководство

Шаг 2:

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

Шаг 3:

$ rm -rf ~/.docker

Шаг 4:

$ docker-compose build --pull

Заканчивать!

person Johnson Chen    schedule 13.11.2020

У меня возникла проблема, когда я попытался подключиться по 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',
         'username@instance-1',
         '--command' ,'sh start.sh'

My 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/questions/332532/how-to-set-path-when-running-a-ssh-command

person vanduc1102    schedule 10.04.2019

Итак, я столкнулся с той же проблемой, когда я пытаюсь вытащить изображение из GCR в экземпляр GCP и хочу поделиться своим решением.

Я запустил gcloud auth configure-docker и получил предупреждение:

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 components install docker-credential-gcr и получил длинную ошибку:

ERROR: (gcloud.components.install) You cannot perform this action because this Cloud SDK installation is managed by an external package manager.
Please consider using a separate installation of the Cloud SDK created through the default mechanism described at: https://cloud.google.com/sdk/

Когда ни одно решение не помогло, я удалил предоставленный Google пакет google-cloud-sdk, который был установлен через snap и установлен с помощью диспетчера пакетов, специфичного для дистрибутива, для меня это apt-get, как указано в Установка Google Cloud SDK: страница параметров установки и повторно запустил gcloud auth configure-docker, и на этот раз он решил мою проблему.

person Fazle Rabbi    schedule 10.02.2020

В моем случае проблема была связана с тем, как WSL 1 работает с Docker в Windows. Сначала я устанавливал и инициализировал gcloud только в WSL Ubuntu, а не в Windows. Однако, поскольку демон Docker фактически запускается в Windows, вам также необходимо установить gcloud для Windows (и не забудьте запустить там все инициалы и авторизации).

person Martin D    schedule 07.08.2020