Anmeldung am Docker-Konto nicht möglich


104
OS: Ubuntu 18.04 Server
Docker 18.3 CE

Ich bin von meinem Windows 10-Laptop aus mit einer PuTTY SSH-Sitzung am Server angemeldet.

Ich habe Docker nicht auf meinem lokalen Windows-Laptop, daher werden alle Arbeiten auf dem Remote-Server ausgeführt.

Ich kann alle Docker-Befehle auf dem Remote-Server mithilfe der Terminalsitzung ausführen.

Wenn ich jedoch versuche, mein Image auf dem Docker-Hub zu speichern, wenn ich mich anmelden möchte, verwenden Sie Folgendes:

docker login

Ich erhalte die folgende Fehlermeldung:

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`

Ich habe keine Fehlermeldungen erhalten, als ich mein Image auf dem Remote-Server erstellt habe.

Ich sehe auch keinen .docker-Ordner im zugehörigen Home-Verzeichnis auf dem Remote-Server. Irgendwelche Ideen?


Ich bin heute auf ein ähnliches Problem gestoßen, als ich versucht habe, docker loginaus einem LXD / LXC-Container heraus zu laufen . Dieses Problem habe ich gelöst, indem ich es .docker/config.jsonvon meinem Host in mein $HOME/.docker/Verzeichnis innerhalb des LXD / LXC-Containers kopiert habe , den ich manuell erstellt habe. Ich versuche gerade, ein anderes Problem herauszufinden, wollte aber fragen, ob Sie dies bereits versucht haben?
code_dredd

Nein, ich habe Windows irgendwie aufgegeben. Ich bekomme morgen einen neuen Laptop, auf dem ich Ubuntu 18 als Dual-Boot installieren werde.
EastsideDev

Ich habe hier ein Problem dafür eröffnet: github.com/docker/cli/issues/1136 . Wenn sie eine Lösung dafür finden, werde ich sie hier posten.
thishandp7

Antworten:


184

Bearbeiten 2019-04-07:

Da dies die derzeit ausgewählte Antwort ist, sollten die Leute zuerst die unten stehende @ Anish Varghese-Lösung ausprobieren, da dies die einfachste zu sein scheint. Sie müssen nur gnupg2 installieren und Pakete übergeben:

sudo apt install gnupg2 pass

Wenn es nicht funktioniert, können Sie meine ursprüngliche Lösung hier ausprobieren:

Ich hatte das gleiche Problem. Die Antwort von bak2trak hat funktioniert, aber die Anmeldeinformationen wurden im Klartext gespeichert. Hier ist die Lösung, wenn Sie sie in einem Passwortspeicher aufbewahren möchten.

1) Laden Sie den Docker-Berechtigungsnachweis von https://github.com/docker/docker-credential-helpers/releases herunter

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

3) chmod u+x docker-credential-pass

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

5) Sie müssen den Docker-Berechtigungsnachweis-Pass einrichten (die folgenden Schritte basieren auf https://github.com/docker/docker-credential-helpers/issues/102#issuecomment-388634452 ).

5.1) installiere gpg und pass ( apt-get install gpg pass)

5.2) gpg --generate-key, geben Sie Ihre Daten ein. Sie sollten so etwas sehen:

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

Kopieren Sie die Zeile 123 ...

5.3) pass init 1234567890ABCDEF1234567890ABCDEF12345678(Paste)

5.4) pass insert docker-credential-helpers/docker-pass-initialized-checkund setzen Sie das nächste Passwort "Pass wird initialisiert" (ohne Anführungszeichen).

5.5) pass show docker-credential-helpers/docker-pass-initialized-check. Sie sollten sehen, dass der Pass initialisiert ist.

5.6) docker-credential-pass list

6) Erstellen Sie eine ~ / .docker / config.json mit:

{
"credsStore": "pass"
}

7) Docker Login sollte jetzt funktionieren

Hinweis: Wenn bei der zukünftigen Ausführung die Fehlermeldung "Passspeicher ist nicht initialisiert" angezeigt wird, führen Sie den folgenden Befehl aus (der Passspeicher wird im Speicher neu geladen):

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

Sie werden nach Ihrem Passwort gefragt und der Passspeicher wird initialisiert.

Dies basiert auf dieser Diskussion: https://github.com/moby/moby/issues/25169#issuecomment-431129898


Hat bei mir nicht funktioniert. Ich erhalte die Meldung, wenn ich versuche, mich anzumelden: "Fehler
GlacialSpoon

Ich habe erneut begonnen, nachdem ich pass deinstalliert und den Ordner .password-store gelöscht habe. Scheint jetzt besser. Vielen Dank.
GlacialSpoon

1
@ Jean-Phillipe Jodoin, danke. Es scheint, dass ich dies regelmäßig aufrufen muss, sonst findet der Anmeldeanruf die Anmeldeinformationen nicht. Ich habe gelesen, dass dies möglicherweise damit zu tun hat, dass der GPG-Cache abläuft und die "Pass-Show" ihn aufweckt. Wenn der Server neu gestartet wird, muss ich zum Schritt "Einfügen übergeben" zurückkehren, bevor die Dinge funktionieren. Es ist nicht sehr praktisch, aber es erlaubt mir, fortzufahren.
GlacialSpoon

1
Überprüfen Sie die Antwort von Anish Varghese unten, es scheint die einfachste und sauberste Lösung zu sein.
Aurelien

1
@ JoePhillips: Mit dir einverstanden. Integrierte seine Lösung mit Zitieren.
Jean-Philippe Jodoin

192

Die Installation der folgenden Pakete in Ubuntu hat mein Problem behoben

sudo apt install gnupg2 pass

hat bei mir nicht funktioniert, aber auch die Installation von gpg hat funktioniert: "sudo apt install gnupg2 pass gpg"
Jörg Beyer

6
Arbeitete auch für mich am Ubuntu 18.04. Ich habe nur ausgestellt sudo apt install pass, der Rest kam als seine Abhängigkeiten
Álex

4
Arbeitete für mich am Unbuntu 18.04.
Gill Bates

4
Was ist die Wurzel des Problems? und warum wie gnupg2 passwird das Problem behoben?
Skyfall

1
Arbeitete auch für mich am Ubuntu
19.04

41

Ich hatte das gleiche Problem in Ubuntu 18.08 und dies funktionierte schließlich für mich .. als vorübergehende Lösung.

Ich hatte diesen Ordner erstellt, home/.docker/da einige Lösungen mir vorschlugen, eine Datei zu erstellen config.jsonund Standardanmeldeinformationen darin zu schreiben, d. H.

{
    "credsStore": "pass"
}
  • Ich habe diese Datei gelöscht config.json.
  • Dann wurde Docker-Credential-Secretservice in etwas anderes umbenannt, damit diese Datei nicht abgerufen wird.

    sudo mv / usr / bin / docker-Berechtigungsnachweis-Geheimdienst / usr / bin / Docker-Berechtigungsnachweis-Geheimdienst_x

und es hat funktioniert!


2
@Renrhaf Der erste Docker sucht standardmäßig nach "pass", wo er in OS-X in gnome key-chain und osx-keychain sucht. Wenn es nicht gefunden wird, sucht es org.freedesktop.secrets. Es ist nicht für Ubuntu 18 gefunden (einige Probleme). Nachdem Sie es (Docker-Credential-Secretservice) in etwas anderes umbenannt haben, greift es zurück, um die Konfigurationsdatei selbst zu erstellen. Sie können im Ordner home / .docker nachsehen, dass eine config.json-Datei erstellt worden wäre.
Bak2trak

Ich bin gerade auf dieses Problem gestoßen und habe es über diese Methode gelöst. Ich habe docker-credential-secretservicevon GH installiert , einen ~/.docker/config.jsonmit Inhalt wie oben erstellt und dann versucht, mich anzumelden. Ich habe einen Fehler erhalten. Dann löschte der .dockerOrdner config.jsonund die /usr/bin/docker-credential-secretserviceausführbare Datei und lief dann docker loginwieder mit Erfolg
Andy

1
An alle, die das gleiche Problem haben: Vergessen Sie nicht, config.json zu löschen . Ich hätte das fast aufgegeben, aber es funktionierte im letzten Moment, nachdem ich config.json gelöscht hatte.
sr9yar

2
Für mich habe ich deinstalliert docker-composeund dann deine sudo mv /usr/bin/docker-credential-secretservice /usr/bin/docker-credential-secretservice_xUmbenennung ausgeführt, es hat funktioniert. Weiß jemand, wofür docker-credential-secretserviceverwendet wird?
user1032613

1
Diese Lösung hat bei mir funktioniert, speichert jedoch die Basis 64-codierten Anmeldeinformationen. Ich habe unten eine Lösung gepostet, die pass verwendet. stackoverflow.com/questions/50151833/…
Jean-Philippe Jodoin

3

Wenn apt pass gnupg2 pass für Sie nicht funktioniert, können Sie auch das Paket golang-docker-credential-helpers installieren


2

Für mich docker pushgescheitert mit

denied: requested access to the resource is denied

... also wollte ich docker loginaber nach Eingabe der Anmeldeinformationen folgendes bekommen:

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

Zum Glück hatte ich einen anderen Computer zur Verfügung, auf dem ich mich ohne Änderungen am System anmelden konnte. Ich habe den Inhalt von ~/.docker/config.json...

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

... zur anderen Maschine und docker pusharbeitete.


1

Dies kann auch helfen, zumindest in 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


1

Für mich war die einfachste Lösung, die Datei config.json im Verzeichnis .docker im Benutzerverzeichnis zu erstellen:

/home/.docker/config.json

Dann habe ich den Inhalt dieser Datei von dem Server kopiert, von dem aus ich mich beim Docker-Hub anmelden konnte.

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

}

Dies ist eine einfache Problemumgehung, da Sie kein Paket installieren oder aktualisieren müssen, was auf Produktionsservern nicht einfach möglich ist.


Leider ist dies die einzige Problemumgehung, die für mich funktioniert hat. Zumindest ist es möglich, ein Zugriffstoken anstelle des pwd Ihres Kontos zu verwenden.
George Aristy

Der Pfad "~ / home / .docker / config.json" scheint so falsch zu sein. Sie meinten wahrscheinlich "~ / .docker / config.json"
BlakBat

Vielen Dank, dass Sie darauf hingewiesen haben, und den Pfad aktualisiert haben.
Herr Kashyap

0

Nun, Sie haben die Lösung bereits gelesen, aber die Tatsache ist, dass gnupg2 jetzt nicht standardmäßig in Ubuntu 18+ installiert ist. Das ist der Grund apt upgrade, warum sich die Dinge irgendwann etwas anders verhalten.


0

Nach der Antwort hatte ich verschiedene Probleme.

  1. Die Schlüsselgenerierung blieb bei der Entropie hängen (Schritt 5.2).

Glücklicherweise ist das Update einfach und Sie müssen nur das Paket installieren rng-tools: https://stackoverflow.com/a/32941065

  1. Bei pass init <key>(Schritt 5.3) wurde der Fehler gpg: decryption failed: No secret keyangezeigt.

Tatsächlich ist dieses Problem darauf zurückzuführen, dass der geheime Schlüssel auf Root-Berechtigungen beschränkt ist.

Ich habe den Besitz der .gnupg .password-storeOrdner im Homedir meines Benutzers geändert.

Laden Sie dann den Dirmngr neu, um die Warnung "Unsicherer Besitz" zu vermeiden:

gpgconf --kill dirmngr

Wenn Sie nicht alles tun möchten, können Sie alle Befehle der Antwort als root / sudo ausführen.


0

Folgendes zu erstellen hat es für mich gelöst:

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

0

Einfache Lösung: Entfernen Sie einfach "credsStore": "secretservice"aus ~ / .docker / config.json


-3

Installieren Sie die folgenden Pakete in Ubuntu

sudo apt install gnupg2 pass

Das ist für mich gearbeitet.


1
Dies bietet keine Ergänzung zu früheren Antworten mit demselben oder einem besseren Inhalt.
Karl Richter
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.