Impossibile accedere all'account Docker


110
OS: Ubuntu 18.04 Server
Docker 18.3 CE

Sono connesso al server, dal mio laptop Windows 10, utilizzando una sessione SSH PuTTY.

Non ho Docker sul mio laptop Windows locale, quindi tutto il lavoro viene svolto sul server remoto.

Posso eseguire tutti i comandi Docker, sul server remoto, utilizzando la sessione terminale.

Tuttavia, quando provo a salvare la mia immagine nell'hub Docker, quando provo ad accedere, utilizzando:

docker login

Ricevo il seguente messaggio di errore:

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`

Non ho ricevuto alcun messaggio di errore quando ho creato la mia immagine sul server remoto.

Inoltre, non vedo una cartella .docker nella relativa home directory sul server remoto. Qualche idea?


Oggi docker loginho riscontrato un problema in qualche modo simile durante il tentativo di eseguire da un contenitore LXD / LXC. Quello in particolare l'ho risolto copiando .docker/config.jsondal mio host alla mia $HOME/.docker/directory all'interno del contenitore LXD / LXC, che ho creato manualmente. Al momento sto cercando di risolvere un altro problema, ma volevo chiederti se avevi già provato a farlo?
code_dredd

No, ho quasi rinunciato a Windows. Domani riceverò un nuovo laptop, dove installerò Ubuntu 18 come dual boot.
EastsideDev

Ho aperto un problema per questo qui github.com/docker/cli/issues/1136 . Se trovano una soluzione per questo, la posterò qui.
thishandp7

Risposte:


195

Modifica 2019-04-07:

Poiché questa è la risposta attualmente selezionata, penso che le persone dovrebbero provare prima la soluzione @Anish Varghese di seguito poiché sembra essere la più semplice. Devi solo installare gnupg2 e passare i pacchetti:

sudo apt install gnupg2 pass

Se non funziona, puoi provare la mia soluzione originale qui:

Ho avuto lo stesso problema. La risposta bak2trak ha funzionato, ma ha salvato le credenziali in chiaro. Ecco la soluzione se vuoi tenerli in un archivio di password.

1) Scarica docker-credential-pass da 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) Sarà necessario configurare docker-credential-pass (i seguenti passaggi sono basati su https://github.com/docker/docker-credential-helpers/issues/102#issuecomment-388634452 )

5.1) installa gpg e pass ( apt-get install gpg pass)

5.2) gpg --generate-key, inserisci le tue informazioni. Dovresti vedere qualcosa del genere:

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

Copia la riga 123 ...

5.3) pass init 1234567890ABCDEF1234567890ABCDEF12345678(incolla)

5.4) pass insert docker-credential-helpers/docker-pass-initialized-checke impostare la password successiva "il passaggio è inizializzato" (senza virgolette).

5.5) pass show docker-credential-helpers/docker-pass-initialized-check. Dovresti vedere il passaggio è inizializzato.

5.6) docker-credential-pass list

6) crea un ~ / .docker / config.json con:

{
"credsStore": "pass"
}

7) il login docker dovrebbe ora funzionare

Nota: se viene visualizzato l'errore "l'archivio dei passaggi non è inizializzato" nell'esecuzione futura, eseguire il comando seguente (ricaricherà l'archivio dei passaggi in memoria):

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

Chiederà la tua password e inizializzerà il pass store.

Questo si basa su questa discussione: https://github.com/moby/moby/issues/25169#issuecomment-431129898


Non ha funzionato per me. Ricevo il messaggio quando provo ad accedere alla finestra mobile: "errore durante l'acquisizione delle credenziali - err: stato di uscita 1, out:` pass store is uninitialized "
GlacialSpoon

Ho ricominciato dopo aver disinstallato pass e cancellato la cartella .password-store. Sembra meglio adesso. Grazie.
GlacialSpoon

1
@ Jean-Phillipe Jodoin, grazie. Sembra che debba chiamarlo periodicamente altrimenti la chiamata di accesso non riesce a trovare le credenziali. Ho letto che potrebbe essere qualcosa a che fare con la scadenza della cache di gpg e il "pass show" lo risveglia. Quando il server si riavvia, devo tornare al passaggio "pass insert" prima che le cose funzionino. Non è molto comodo ma mi permette di procedere.
GlacialSpoon

1
Controlla la risposta di Anish Varghese di seguito, sembra essere la soluzione più semplice e pulita.
Aurelien

1
@ JoePhillips: d'accordo con te. Ha integrato la sua soluzione con la citazione.
Jean-Philippe Jodoin

200

Installa i seguenti pacchetti in Ubuntu ha risolto il mio problema

sudo apt install gnupg2 pass

non ha funzionato per me, ma anche l'installazione di gpg ha funzionato: "sudo apt install gnupg2 pass gpg"
Jörg Beyer

6
Ha funzionato anche per me su Ubuntu 18.04. Ho solo emesso sudo apt install pass, il resto è venuto come sue dipendenze
Álex

4
Ha funzionato per me su Unbuntu 18.04.
Gill Bates

5
Qual è la radice del problema? e perché come gnupg2 passrisolverà il problema?
Skyfall

1
Ha funzionato anche per me a Ubuntu 19.04
Ammad Khalid il

41

Ho affrontato lo stesso problema in Ubuntu 18.08 e questo ha finalmente funzionato per me .. come soluzione temporanea.

Avevo creato questa cartella home/.docker/perché alcune soluzioni mi suggerivano di creare un file config.jsone scrivere le credenziali predefinite in esso, ad es

{
    "credsStore": "pass"
}
  • Ho cancellato questo file config.json.
  • Quindi rinominato docker-credential-secretservice in qualcos'altro in modo che non prenda questo file.

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

e ha funzionato!


2
@Renrhaf Prima finestra mobile da sguardi di default per "passare" in cui si cerca in GNOME portachiavi e osx-portachiavi a OS-X. Se non viene trovato, cerca org.freedesktop.secrets. Non è stato trovato per Ubuntu 18 (alcuni problemi). Dopo averlo rinominato (docker-credential-secretservice) in qualcos'altro, ricade per creare il file di configurazione da solo, puoi guardare nella cartella home / .docker che sarebbe stato creato un file config.json.
bak2trak

Ho appena riscontrato questo problema e l'ho risolto con questo metodo, una specie di. Ho installato docker-credential-secretserviceda GH, creato un ~/.docker/config.jsoncon il contenuto come sopra, quindi ho provato ad accedere. Ho ricevuto un errore. Quindi ha cancellato la .dockercartella config.jsone l' /usr/bin/docker-credential-secretserviceeseguibile e poi è stato eseguito di docker loginnuovo con successo
Andy

1
Per chiunque abbia lo stesso problema: non dimenticare di eliminare config.json . Ho quasi rinunciato a questo, ma ha funzionato all'ultimo momento, dopo aver cancellato config.json.
sr9yar

2
Per me, ho disinstallato docker-composee poi ho eseguito la tua sudo mv /usr/bin/docker-credential-secretservice /usr/bin/docker-credential-secretservice_xridenominazione, ha funzionato. Qualcuno sa a cosa docker-credential-secretserviceserve?
user1032613

1
Questa soluzione ha funzionato per me, ma salva le credenziali in base 64 codificate. Ho postato di seguito una soluzione che utilizza pass. stackoverflow.com/questions/50151833/…
Jean-Philippe Jodoin

4

Se apt install gnupg2 pass non funziona per te, puoi anche installare il pacchetto golang-docker-credential-helpers


4

Anche questo può aiutare, almeno lo ha fatto 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


2

Per me ha docker pushfallito con

denied: requested access to the resource is denied

... quindi volevo docker loginma ho ottenuto quanto segue dopo aver inserito le credenziali:

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

Fortunatamente, avevo a disposizione un'altra macchina su cui potevo accedere senza alcuna modifica al sistema. Ho copiato il contenuto di ~/.docker/config.json...

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

... all'altra macchina e ha docker pushfunzionato.


1

Per me la soluzione più semplice era creare il file config.json nella directory .docker all'interno della home directory dell'utente:

/home/.docker/config.json

Quindi ho copiato il contenuto di questo file dal server da cui sono stato in grado di accedere all'hub docker.

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

}

È una soluzione alternativa semplice, perché non richiede l'installazione o l'aggiornamento di alcun pacchetto che non possiamo fare facilmente sui server di produzione.


Purtroppo, questa è l'unica soluzione alternativa che ha funzionato per me ... almeno è possibile utilizzare un token di accesso al posto del pwd del tuo account.
George Aristy,

Il percorso "~ / home / .docker / config.json" sembra così sbagliato. Probabilmente volevi dire "~ / .docker / config.json"
BlakBat

Grazie per averlo evidenziato, aggiornato il percorso.
Mr Kashyap

0

Bene, hai già letto la soluzione, ma il fatto è che gnupg2 non è ora installato di default in Ubuntu 18+, questo è il motivo, qualche tempo dopo apt upgrade, le cose si comportano in modo leggermente diverso.


0

Dopo la risposta ho avuto diversi problemi.

  1. La generazione della chiave è stata bloccata all'entropia (passaggio 5.2).

Fortunatamente, la correzione è semplice e devi solo installare il pacchetto rng-tools: https://stackoverflow.com/a/32941065

  1. In pass init <key>(passaggio 5.3) l'errore si è gpg: decryption failed: No secret keypresentato.

In realtà questo problema è dovuto al fatto che la chiave segreta è limitata ai privilegi di root.

Ho cambiato la proprietà delle .gnupg .password-storecartelle nella directory principale del mio utente.

Quindi ricaricato il dirmngr per evitare l'avviso di "proprietà non sicura":

gpgconf --kill dirmngr

Se non vuoi fare tutto ciò, puoi eseguire tutti i comandi della risposta come root / sudo.


0

creando quanto segue lo ha risolto per me:

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

0

Soluzione semplice: basta rimuovere "credsStore": "secretservice"da ~ / .docker / config.json


-3

Installa i seguenti pacchetti in ubuntu

sudo apt install gnupg2 pass

Questo ha funzionato per me.


1
Ciò non fornisce alcuna aggiunta alle risposte precedenti con lo stesso contenuto o migliore.
Karl Richter
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.