Error getting credentials - err: exec: "docker-credential-desktop": executable file not found in $PATH

Помилка error getting credentials - err: exec: "docker-credential-desktop": executable file not found in $PATH виникає через те, що Docker намагається використати менеджер облікових даних docker-credential-desktop, але його немає в системі. Цей менеджер часто встановлюється разом із Docker Desktop, який зазвичай використовується на macOS і Windows, але на Linux його немає.

На Linux Docker зазвичай використовує docker-credential-secretservice або docker-credential-pass для збереження облікових даних.

Рішення

  1. Перевірте налаштування облікових даних у Docker

    Відкрийте або створіть файл конфігурації Docker у вашому домашньому каталозі:

    nano ~/.docker/config.json
    

    У цьому файлі ви побачите розділ credsStore, де Docker зберігає інформацію про менеджер облікових даних. Наприклад:

    {
        "credsStore": "desktop"
    }
    

    Замініть "desktop" на інший доступний менеджер, наприклад, "secretservice" або "pass":

    {
        "credsStore": "secretservice"
    }
    

    Збережіть файл і закрийте редактор.

  2. Встановіть потрібний менеджер облікових даних:

    • Для використання secretservice:

      sudo apt install gnupg pass
      
    • Для використання pass (інший варіант збереження облікових даних):

      sudo apt install pass
      
  3. Перевірте роботу Docker після змін:

    Спробуйте ще раз виконати команду madock setup --download --install або будь-яку іншу Docker-команду, яка вимагає доступу до облікових даних, щоб переконатися, що помилка зникла.

Альтернативний варіант: Видалити credsStore

Якщо Docker не використовує авторизацію для приватного реєстру, ви можете повністю видалити рядок "credsStore" із ~/.docker/config.json. У такому разі Docker буде зберігати облікові дані безпосередньо у файлі конфігурації.

Мій config.json виглядає так:


{
        "auths": {},
        "credsStore": "desktop",
        "currentContext": "desktop-linux",
        "plugins": {
                "debug": {
                        "hooks": "exec"
                },
                "scout": {
                        "hooks": "pull,buildx build"
                }
        },
        "features": {
                "hooks": "true"
        }
}

Щоб Docker Engine працював без помилок на Debian після видалення Docker Desktop, вам потрібно видалити або змінити налаштування, які все ще посилаються на Desktop.

Оновлення config.json

  1. Видаліть або оновіть налаштування для credsStore та currentContext:

    Ваш файл має виглядати приблизно так, після редагування:

    {
        "auths": {},
        "plugins": {
            "debug": {
                "hooks": "exec"
            },
            "scout": {
                "hooks": "pull,buildx build"
            }
        },
        "features": {
            "hooks": "true"
        }
    }
    

    Це видаляє налаштування "credsStore": "desktop" та "currentContext": "desktop-linux", які більше не підтримуються в середовищі Docker Engine на Linux.

  2. Збережіть файл і закрийте редактор.

  3. Перевірте роботу Docker:

    Спробуйте виконати команду:

    docker info
    

Додатковий крок (за потреби): Створення нового контексту Docker

Якщо вам потрібен контекст для роботи, створіть його, замість того, що використовувався для Docker Desktop:

docker context create my-context
docker context use my-context

Ці кроки повинні вирішити проблему, видаливши залежність від Docker Desktop у файлі конфігурації.