Не вдається ввійти в обліковий запис Docker


109
OS: Ubuntu 18.04 Server
Docker 18.3 CE

Я ввійшов на сервер із ноутбука Windows 10 за допомогою сеансу PuTTY SSH.

У мене немає Docker на локальному ноутбуці Windows, тому вся робота виконується на віддаленому сервері.

Я можу виконувати всі команди Docker на віддаленому сервері, використовуючи сеанс терміналу.

Однак, коли я намагаюся зберегти своє зображення у концентраторі Docker, коли я намагаюся увійти, використовуючи:

docker login

Я отримую таке повідомлення про помилку:

error getting credentials - err: exit status 1, out: `GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.secrets was not provided by any .service files`

Коли я створював своє зображення на віддаленому сервері, я не отримував повідомлень про помилки.

Я також не бачу папку .docker у відповідному домашньому каталозі на віддаленому сервері. Будь-які ідеї?


Сьогодні я зіткнувся з дещо подібною проблемою, намагаючись запустити docker loginвсередині контейнера LXD / LXC. Цього конкретного я вирішив, скопіювавши .docker/config.jsonз мого хосту в мій $HOME/.docker/каталог у контейнері LXD / LXC, який я створив вручну. Зараз я намагаюся з’ясувати інше питання, але хотів би запитати, чи не намагались ви це робити?
code_dredd

Ні, я начебто відмовився від Windows. Завтра я отримую новий ноутбук, де буду встановлювати Ubuntu 18 як подвійне завантаження.
EastsideDev

Я відкрив проблему для цього тут github.com/docker/cli/issues/1136 . Якщо вони знайдуть рішення для цього, я розміщу його тут.
thishandp7

Відповіді:


195

Редагувати 2019-04-07:

Оскільки це обрана на даний момент відповідь, я думаю, що спочатку людям слід спробувати рішення @Anish Varghese, оскільки воно здається найпростішим. Вам потрібно лише встановити пакети gnupg2 та передати:

sudo apt встановити gnupg2 pass

Якщо це не працює, ви можете спробувати моє оригінальне рішення тут:

У мене була та сама проблема. Відповідь bak2trak спрацювала, але зберегла облікові дані у чистому тексті. Ось рішення, якщо ви хочете зберегти їх у сховищі паролів.

1) Завантажте docker-credential-pass з https://github.com/docker/docker-credential-helpers/releases

2) tar -xvf docker-credential-pass.tar.gz

3) chmod u+x docker-credential-pass

4) mv docker-credential-pass /usr/bin

5) Вам потрібно буде встановити docker-credential-pass (наступні кроки засновані на https://github.com/docker/docker-credential-helpers/issues/102#issuecomment-388634452 )

5.1) встановити gpg і передати (apt-get install gpg pass )

5.2) gpg --generate-key, введіть свою інформацію. Ви повинні побачити щось подібне:

pub   rsa3072 2018-10-07 [SC] [expires: 2020-10-06]
      1234567890ABCDEF1234567890ABCDEF12345678

Скопіюйте рядок 123 ...

5.3) pass init 1234567890ABCDEF1234567890ABCDEF12345678 (вставити)

5.4) pass insert docker-credential-helpers/docker-pass-initialized-check і встановіть наступний пароль "пропуск ініціалізований" (без лапок).

5,5) pass show docker-credential-helpers/docker-pass-initialized-check . Ви повинні побачити, що пропуск ініціалізований.

5.6) docker-credential-pass list

6) створити ~ / .docker / config.json за допомогою:

{
"credsStore": "pass"
}

7) Логін докера тепер повинен працювати

Примітка: Якщо під час подальшого запуску ви отримаєте помилку "Магазин пропусків неініціалізований", запустіть наведену нижче команду (це перезавантажить сховище пропусків у пам'яті):

pass show docker-credential-helpers/docker-pass-initialized-check

Він запитає ваш пароль і ініціалізує магазин пропусків.

Це базується на цьому обговоренні: https://github.com/moby/moby/issues/25169#issuecomment-431129898


Не працював у мене. Я отримую повідомлення при спробі входу до докера: "помилка отримання облікових даних - помилка: статус виходу 1, вихід:` пропуск магазину неініціалізований "
GlacialSpoon

Я почав знову після видалення пропуску та видалення папки .password-store. Зараз здається краще. Дякую.
GlacialSpoon

1
@ Jean-Phillipe Jodoin, дякую. Здається, мені доводиться дзвонити це періодично, інакше виклик входу не зможе знайти облікові дані. Я прочитав, це може бути пов’язано із закінченням терміну дії кешу gpg, і "прохідне шоу" пробуджує його. Коли сервер перезавантажується, я маю повернутися до кроку "пройти вставку", перш ніж все запрацює. Це не дуже зручно, але це дозволяє мені продовжувати.
GlacialSpoon

1
Перевірте відповідь Аніша Варгезе нижче, це видається найпростішим і найчистішим рішенням.
Aurelien

1
@JoePhillips: Погодився з вами. Інтегрував своє рішення із цитуванням.
Jean-Philippe Jodoin

200

Встановіть наступні пакети в ubuntu, виправили мою проблему

sudo apt install gnupg2 pass

у мене не працювало, але спрацювало і встановлення gpg: "sudo apt install gnupg2 pass gpg"
Йорг Бейер

6
Працював у мене і на ubuntu 18.04. Я лише видав sudo apt install pass, решта потрапила як залежність
Алекс

4
Працював у мене на Unbuntu 18.04.
Гілл Бейтс

5
У чому корінь проблеми? і чому як gnupg2 passвирішити проблему?
Skyfall

1
Працював у мене і в ubuntu 19.04
Аммад Халід

41

Я зіткнувся з такою ж проблемою в ubuntu 18.08, і це нарешті спрацювало для мене .. як тимчасове рішення.

Я створив цю папку, home/.docker/оскільки деякі рішення пропонували мені створити файл config.jsonі записати в нього облікові дані за замовчуванням, тобто

{
    "credsStore": "pass"
}
  • Я видалив цей файл config.json.
  • Потім перейменовано docker-credential-secretservice на щось інше, щоб воно не зайняло цей файл.

    sudo mv / usr / bin / docker-credential-secretservice / usr / bin / docker-credential-secretservice_x

і це спрацювало!


2
@Renrhaf Перший докер за замовчуванням шукає "пропуск", де здійснює пошук у ланцюжку ключів gnome та брелоку osx в OS-X. Якщо його не знайдено, тоді шукає org.freedesktop.secrets. Його не знайдено для ubuntu 18 (деякі проблеми). Після перейменування його (docker-credential-secretservice) в щось інше, тоді воно відновлюється, щоб створити файл конфігурації самостійно, Ви можете заглянути в папку home / .docker, був би створений один файл config.json.
bak2trak

Я щойно зіткнувся з цією проблемою і вирішив її за допомогою цього методу - свого роду. Я встановив docker-credential-secretserviceз GH, створив файл ~/.docker/config.jsonіз вмістом, як зазначено вище, а потім спробував увійти. Помилка. Потім видалив .dockerпапку config.jsonі /usr/bin/docker-credential-secretserviceвиконуваний файл, а потім docker loginзнову запустився з успіхом
Енді

1
Усім, у кого однакова проблема: Не забудьте видалити config.json . Я майже відмовився від цього, але це спрацювало в останній момент, після того, як я видалив config.json.
sr9yar

2
Для мене я видалив, docker-composeа потім запустив ваше sudo mv /usr/bin/docker-credential-secretservice /usr/bin/docker-credential-secretservice_xперейменування, це спрацювало. Хтось знає, для чого docker-credential-secretserviceвикористовується?
user1032613

1
Це рішення працювало для мене, але воно зберігає закодовані дані 64, закодовані. Я розмістив нижче рішення, яке використовує пропуск. stackoverflow.com/questions/50151833/…
Jean-Philippe Jodoin

4

Якщо програма apt install gnupg2 не працює для вас, ви також можете встановити пакет golang-docker-credential-helpers


4

Це також може допомогти, принаймні це було в Ubuntu 20.04:

wget https://github.com/docker/docker-credential-helpers/releases/download/v0.6.3/docker-credential-secretservice-v0.6.3-amd64.tar.gz && tar -xf docker-credential-secretservice-v0.6.3-amd64.tar.gz && chmod +x docker-credential-secretservice && mv docker-credential-secretservice /usr/local/bin/

https://hackernoon.com/getting-rid-of-docker-plain-text-credentials-88309e07640d   https://github.com/docker/docker-credential-helpers/releases


2

Для мене docker pushне вдалося

denied: requested access to the resource is denied

... так що я хотів, docker loginале після введення облікових даних отримав таке:

Remote error from secret service:
  org.freedesktop.DBus.Error.UnknownMethod:
  No such interface 'org.freedesktop.Secret.Collection' on object at path
  /org/freedesktop/secrets/collection/login

Error saving credentials:
  error storing credentials - err: exit status 1, out:
  No such interface 'org.freedesktop.Secret.Collection' on object at path
  /org/freedesktop/secrets/collection/login

На щастя, у мене була доступна інша машина, на якій я зміг увійти в систему без будь-яких змін у системі. Я скопіював вміст ~/.docker/config.json...

{
        "auths": {
                "https://index.docker.io/v1/": {
                        "auth": "<some-hash-value>"
                }
        },
        "HttpHeaders": {
                "User-Agent": "Docker-Client/18.09.2 (linux)"
        }
}

... на іншу машину і docker pushпрацював.


1

Для мене найпростішим рішенням було створити файл config.json в каталозі .docker всередині домашнього каталогу користувача:

/home/.docker/config.json

Потім я скопіював вміст цього файлу з сервера, звідки я зміг увійти в докер-центр.

{
        "auths": {
                "https://index.docker.io/v1/": {
                        "auth": "SOMEVALUE"
                }
        },
        "HttpHeaders": {
                "User-Agent": "Docker-Client/18.06.1-ce (linux)"
        }

}

Це просте обхідне рішення, оскільки для цього не потрібно встановлювати або оновлювати будь-який пакет, який ми не можемо легко зробити на робочих серверах.


На жаль, це єдине обхідне рішення, яке спрацювало для мене ... принаймні можна використовувати маркер доступу замість pwd вашого облікового запису.
Джордж Арісті

Шлях "~ / home / .docker / config.json" здається таким неправильним. Ви, мабуть, мали на увазі "~ / .docker / config.json"
BlakBat

Дякую, що ви це зрозуміли, оновили шлях.
Містер Кашьяп,

0

Що ж, ви вже читали рішення, але справа в тому, що gnupg2 тепер не встановлений за замовчуванням в Ubuntu 18+ apt upgrade.


0

Після відповіді у мене було кілька питань.

  1. Генерація ключа застрягла на ентропії (крок 5.2).

На щастя, виправити це легко, і вам потрібно лише встановити пакет rng-tools: https://stackoverflow.com/a/32941065

  1. На pass init <key>(крок 5.3) з'явилася помилка gpg: decryption failed: No secret key.

Насправді ця проблема пов’язана з обмеженням секретного ключа на права root.

Я змінив право власності на .gnupg .password-storeпапки в homedir мого користувача.

Потім перезавантажив dirmngr, щоб уникнути попередження про "небезпечне володіння":

gpgconf --kill dirmngr

Якщо ви не хочете робити все, що можна, виконайте всі команди відповіді як root / sudo.


0

створення наступного вирішило це для мене:

AWS_CONFIG=$AWS_DIR/config
AWS_CREDENTIALS=$AWS_DIR/credentials
mkdir -p $AWS_DIR

0

Просте рішення: просто видаліть "credsStore": "secretservice"з ~ / .docker / config.json


-3

Встановіть наступні пакети в ubuntu

sudo apt install gnupg2 pass

Це спрацювало для мене.


1
Це не дає жодного доповнення до попередніх відповідей з однаковим або кращим змістом.
Карл Ріхтер,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.