No se puede iniciar sesión en la cuenta de Docker

110
OS: Ubuntu 18.04 Server
Docker 18.3 CE

Estoy conectado al servidor, desde mi computadora portátil con Windows 10, usando una sesión PuTTY SSH.

No tengo Docker en mi computadora portátil Windows local, por lo que todo el trabajo se realiza en el servidor remoto.

Puedo ejecutar todos los comandos de Docker, en el servidor remoto, usando la sesión de terminal.

Sin embargo, cuando intento guardar mi imagen en el hub de Docker, cuando intento iniciar sesión, uso:

docker login

Recibo el siguiente mensaje de error:

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`

No recibí ningún mensaje de error cuando creé mi imagen en el servidor remoto.

Tampoco veo una carpeta .docker en el directorio de inicio relacionado en el servidor remoto. ¿Algunas ideas?

EastsideDev
fuente
Hoy me encontré con un problema algo similar al intentar ejecutar docker logindesde un contenedor LXD / LXC. Ese en particular lo resolví copiando .docker/config.jsondesde mi host a mi $HOME/.docker/directorio dentro del contenedor LXD / LXC, que creé manualmente. Actualmente estoy tratando de resolver otro problema, pero quería preguntar si ya lo había intentado.
code_dredd
No, me di por vencido con Windows. Mañana conseguiré una nueva computadora portátil, donde instalaré Ubuntu 18 como arranque dual.
EastsideDev
He abierto un problema para esto aquí github.com/docker/cli/issues/1136 . Si encuentran una solución para esto, la publicaré aquí.
thishandp7

Respuestas:

195

Editar 2019-04-07:

Como esta es la respuesta actualmente seleccionada, creo que la gente debería probar primero la solución @Anish Varghese a continuación, ya que parece ser la más fácil. Solo necesita instalar los paquetes gnupg2 y pass:

sudo apt install gnupg2 pass

Si no funciona, puede probar mi solución original aquí:

Tuve el mismo problema. La respuesta de bak2trak funcionó, pero guardó las credenciales en texto claro. Aquí está la solución si desea mantenerlos en una tienda de contraseñas.

1) Descargue docker-credential-pass desde 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) Deberá configurar docker-credential-pass (los siguientes pasos se basan en https://github.com/docker/docker-credential-helpers/issues/102#issuecomment-388634452 )

5.1) instalar gpg y pasar ( apt-get install gpg pass)

5.2) gpg --generate-key, ingrese su información. Debería ver algo como esto:

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

Copia la línea 123 ...

5.3) pass init 1234567890ABCDEF1234567890ABCDEF12345678(pegar)

5.4) pass insert docker-credential-helpers/docker-pass-initialized-checky establezca la siguiente contraseña "se inicializa la contraseña" (sin comillas).

5.5) pass show docker-credential-helpers/docker-pass-initialized-check. Debería ver que el paso está inicializado.

5.6) docker-credential-pass list

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

{
"credsStore": "pass"
}

7) el inicio de sesión de Docker ahora debería funcionar

Nota: Si obtiene el error "pass store is uninitialized" en una ejecución futura, ejecute el siguiente comando (volverá a cargar el pass store en la memoria):

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

Le pedirá su contraseña e inicializará la tienda de pases.

Esto se basa en esta discusión: https://github.com/moby/moby/issues/25169#issuecomment-431129898

Jean-Philippe Jodoin
fuente
No funcionó para mí. Recibo el mensaje cuando intento iniciar sesión en la ventana acoplable: "error al obtener las credenciales - err: estado de salida 1, out:` pass store is
uninitialized
Comencé de nuevo después de desinstalar pass y eliminar la carpeta .password-store. Parece mejor ahora. Gracias.
GlacialSpoon
1
@ Jean-Phillipe Jodoin, gracias. Parece que tengo que llamar a esto periódicamente, de lo contrario, la llamada de inicio de sesión no puede encontrar las credenciales. Leí que esto podría ser algo relacionado con la expiración de la caché de gpg y el "pase show" lo despierta. Cuando el servidor se reinicia, tengo que volver al paso de "inserción de paso" antes de que todo funcione. No es muy conveniente pero me permite continuar.
GlacialSpoon
1
Verifique la respuesta de Anish Varghese a continuación, parece ser la solución más fácil y limpia.
Aurelien
1
@JoePhillips: Estoy de acuerdo contigo. Integró su solución con cita.
Jean-Philippe Jodoin
200

Instalar los siguientes paquetes en ubuntu solucionó mi problema

sudo apt install gnupg2 pass
Anish Varghese
fuente
no funcionó para mí, pero también la instalación de gpg funcionó: "sudo apt install gnupg2 pass gpg"
Jörg Beyer
6
También funcionó para mí en ubuntu 18.04. Solo emití sudo apt install pass, el resto llegó como sus dependencias
Álex
4
Me funcionó en Unbuntu 18.04.
Gill Bates
5
¿Cuál es la raíz del problema? y ¿por qué cómo gnupg2 passsolucionará el problema?
Skyfall
1
También funcionó para mí en ubuntu 19.04
Ammad Khalid
41

Enfrenté el mismo problema en ubuntu 18.08 y esto finalmente funcionó para mí ... como una solución temporal.

Había creado esta carpeta home/.docker/ya que algunas soluciones me sugirieron crear un archivo config.jsony escribir las credenciales predeterminadas en él, es decir

{
    "credsStore": "pass"
}
  • Eliminé este archivo config.json.
  • Luego se renombró docker-credential-secretservice a otra cosa para que no recoja este archivo.

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

¡Y funcionó!

bak2trak
fuente
2
@Renrhaf La primera ventana acoplable busca por defecto "pass" donde busca en gnome key-chain y osx-keychain en OS-X. Si no se encuentra, busque org.freedesktop.secrets. No se encuentra para ubuntu 18 (algunos problemas). Después de cambiarle el nombre (docker-credential-secretservice) a otra cosa, luego vuelve a crear el archivo de configuración por sí mismo. Puede buscar en la carpeta home / .docker que se haya creado un archivo config.json.
bak2trak
Acabo de encontrar este problema y lo resolví a través de este método, algo así como. Lo instalé docker-credential-secretservicedesde GH, creé un ~/.docker/config.jsoncontenido como el anterior y luego intenté iniciar sesión. Obtuve un error. Luego eliminó la .dockercarpeta config.jsony el /usr/bin/docker-credential-secretserviceejecutable y luego se ejecutó docker loginnuevamente con éxito
Andy
1
Para cualquiera que tenga el mismo problema: no olvide eliminar config.json . Casi me rindo con esto, pero funcionó en el último momento, después de que eliminé config.json.
sr9yar
2
Para mí, desinstalé docker-composey luego ejecuté su sudo mv /usr/bin/docker-credential-secretservice /usr/bin/docker-credential-secretservice_xcambio de nombre, funcionó. ¿Alguien sabe para qué docker-credential-secretservicese usa?
user1032613
1
Esta solución funcionó para mí, pero guarda las credenciales en base 64 codificadas. Publiqué a continuación una solución que usa pass. stackoverflow.com/questions/50151833/…
Jean-Philippe Jodoin
4

Si apt install gnupg2 pass no funciona para usted, también puede instalar el paquete golang-docker-credential-helpers

Juanra
fuente
4

Esto también puede ayudar, al menos lo hizo en 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

Vlax
fuente
2

Para mi docker pushfallé con

denied: requested access to the resource is denied

... así que quería, docker loginpero obtuve lo siguiente después de ingresar las credenciales:

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

Afortunadamente, tenía otra máquina disponible en la que pude iniciar sesión sin ningún cambio en el sistema. Copié el contenido de ~/.docker/config.json...

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

... a la otra máquina y docker pushfuncionó.

CodeManX
fuente
1

Para mí, la solución más simple fue crear un archivo config.json en el directorio .docker dentro del directorio de inicio del usuario:

/home/.docker/config.json

Luego copié el contenido de este archivo desde el servidor desde donde pude iniciar sesión en el concentrador de Docker.

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

}

Es una solución fácil, porque no requiere que instales o actualices ningún paquete que no podamos hacer fácilmente en los servidores de producción.

Sr. Kashyap
fuente
Lamentablemente, esta es la única solución que me ha funcionado ... al menos es posible usar un token de acceso en lugar del pwd de su cuenta.
George Aristy
La ruta "~ / home / .docker / config.json" parece tan incorrecta. Probablemente quisiste decir "~ / .docker / config.json"
BlakBat
Gracias por señalarlo, actualizó el camino.
Mr Kashyap
0

Bueno, ya leíste la solución, pero el hecho es que gnupg2 ahora no está instalado de forma predeterminada en Ubuntu 18+. Esa es la razón por la que en algún momento las apt upgradecosas se comportan de manera un poco diferente.

octamois
fuente
0

Después de la respuesta tuve varios problemas.

  1. La generación de claves se atascó en la entropía (paso 5.2).

Afortunadamente, la solución es fácil y solo necesita instalar el paquete rng-tools: https://stackoverflow.com/a/32941065

  1. En pass init <key>(paso 5.3) gpg: decryption failed: No secret keyapareció el error .

De hecho, este problema se debe a que la clave secreta está restringida a los privilegios de root.

Cambié la propiedad de las .gnupg .password-storecarpetas en el directorio de inicio de mi usuario.

Luego recargó el directorio para evitar la advertencia de "propiedad insegura":

gpgconf --kill dirmngr

Si no desea hacer todo eso, puede ejecutar todos los comandos de la respuesta como root / sudo.

v0id
fuente
0

crear lo siguiente lo resolvió para mí:

AWS_CONFIG=$AWS_DIR/config
AWS_CREDENTIALS=$AWS_DIR/credentials
mkdir -p $AWS_DIR
Danletski
fuente
0

Solución simple: simplemente elimínelo "credsStore": "secretservice"de ~ / .docker / config.json

MxWild
fuente
-3

Instale los siguientes paquetes en ubuntu

sudo apt install gnupg2 pass

Esto funcionó para mí.

Virani Chetan
fuente
1
Esto no proporciona ninguna adición a las respuestas anteriores con el mismo o mejor contenido.
Karl Richter