Docker no autorizado: autenticación requerida - al empujar con inicio de sesión exitoso

99

Al presionar la imagen de la ventana acoplable (después de iniciar sesión correctamente) desde mi host, obtengo "no autorizado: se requiere autenticación".

Detalles abajo.

-bash-4.2# docker login --username=asamba [email protected]
WARNING: login credentials saved in /root/.docker/config.json
*Login Succeeded*
-bash-4.2#
-bash-4.2# docker push asamba/docker-whale

Do you really want to push to public registry? [y/n]: y
The push refers to a repository [docker.io/asamba/docker-whale] (len: 0)
faa2fa357a0e: Preparing
unauthorized: authentication required

El / var / log / messages muestra 403, no sé si este docker. Vea abajo.

Apr 16 11:39:03 localhost journal: time="2016-04-16T11:39:03.884872524Z" level=info msg="{Action=push, Username=asamba, LoginUID=1001, PID=2125}"
Apr 16 11:39:03 localhost journal: time="2016-04-16T11:39:03.884988574Z" level=error msg="Handler for POST /v1.21/images/asamba/docker-whale/push returned error: Error: Status 403 trying to push repository asamba/docker-whale to official registry: needs to be forced"
Apr 16 11:39:03 localhost journal: time="2016-04-16T11:39:03.885013241Z" level=error msg="HTTP Error" err="Error: Status 403 trying to push repository asamba/docker-whale to official registry: needs to be forced" statusCode=403
Apr 16 11:39:05 localhost journal: time="2016-04-16T11:39:05.420188969Z" level=info msg="{Action=push, Username=asamba, LoginUID=1001, PID=2125}"
Apr 16 11:39:06 localhost kernel: XFS (dm-4): Mounting V4 Filesystem
Apr 16 11:39:06 localhost kernel: XFS (dm-4): Ending clean mount
Apr 16 11:39:07 localhost kernel: XFS (dm-4): Unmounting Filesystem

Se agradece cualquier ayuda, por favor avíseme si necesita más información. Hice el empujón con -f también. ¡Sin suerte!

Anand
fuente
1
Sería útil para el administrador del sitio, así como para otras personas que buscan información sobre el mismo problema, si hiciera clic en la marca de verificación junto a su Respuesta para marcarla como "la" respuesta :-) Se le permite (incluso se le recomienda) hacer eso en Stack Overflow.
Cindy Meister

Respuestas:

87

Editar (13/08/2017)

Según el comentario de @ KaraPirinc, en la versión 17 de la ventana acoplable para iniciar sesión (Paso 1),

docker login -u username -p password

También tuve el mismo problema. Así es como lo resuelvo.

Paso 1: inicie sesión en Docker Hub

docker login --username=<user username> --email=<user email address>

Paso 2: crea un repositorio en Docker Hub . digamos " mysqlserver: sql ".

docker push <user username>/mysqlserver:sql
GPrathap
fuente
7
Esta debería ser la respuesta correcta . docker logintambién funciona sin los parámetros
blnc
5
Funciona perfectamente. Sin embargo, --email ha quedado obsoleto .
IgorGanapolsky
(versión 17 de la ventana acoplable): inicio de sesión de la ventana acoplable -u nombre de usuario -p contraseña
Yusuf Ismail Oktay
gracias por la actualización. Actualizaré la respuesta según tu comentario.
GPrathap
34

La solución que publicaste no me funciona ...

Esto es lo que me funciona:

  1. Cree el repositorio con el nombre deseado.

  2. Cuando confirme la imagen, asigne un nombre a la imagen como el repositorio, incluido el nombre de usuario <dockerusername>/desired-name. Por ejemplo radu/desired-name,.

Radu Gabriel
fuente
# docker ps -a obtenga el nombre de conainer --nostalgic_morse aquí # docker commit -m "prueba" -a "alex" nostalgic_morse alexcpn / grpc # docker push alexcpn / grpc
Alex Punnen
28

¡OKAY! no importa; Encontré la solución. con 403 Se sospecha que HTTP no va a la URL correcta.

Cambie el archivo que tiene las credenciales de inicio de sesión almacenadas ~/.docker/config.jsondel predeterminado generado de

{
        "auths": {
                "docker.io": {
                        "auth": "XXXXXXXXXXXXX",
                        "email": "[email protected]"
                }
        }
}

to - Note el cambio de docker.io -> index.docker.io/v1. Ese es el cambio.

{
        "auths": {
                "https://index.docker.io/v1/": {
                        "auth": "XXXXXXXXXXXXX",
                        "email": "[email protected]"
                }
        }
}

Espero que ayude.

Tenga en cuenta que el campo de autenticación debe ser "nombre de usuario: contraseña" codificado en base64. Por ejemplo: "nombre de usuario: contraseña" codificado en base64 es "dXNlcm5hbWU6cGFzc3dvcmQ ="

por lo que su archivo contendría:

"auth": "dXNlcm5hbWU6cGFzc3dvcmQ="
Anand
fuente
¡Me salvaste bastante tiempo! La solución perfecta para mí también.
Marco Lenzo
7
Me funcionó a mi también. Aquí es lo mismo desde la línea de comando:sudo docker login -e [email protected] -u someuser -p somepass https://index.docker.io/v1/
Banjer
2
Gracias @Banjer, el parámetro -e está obsoleto, y sudo no debería tener que usarse para la mayoría de los que configuraron su sistema correctamente. Una mejor solución sería: docker login -u someuser https://index.docker.io/v1/Esto le pedirá la contraseña, evitando que termine en el historial de comandos.
erb
17

si está utilizando heroku, asegúrese de no olvidar "heroku container: login" antes de presionar.

bjoern
fuente
7

Me estaba encontrando con un problema similar con un mensaje de error igualmente inútil, pero resultó ser porque estaba tratando de enviar una imagen que había creado contra una instancia administrada por una máquina acoplable.

Cuando inicié sesión en la instancia, lo hice docker loginy docker pushtodo funcionó bien.

atomic77
fuente
gracias, el inicio de sesión de Docker crea automáticamente el archivo de configuración como se describe en el enlace
Felix
7

Tuve el mismo problema pero lo arreglé con push con la URL especificada. como: inicio de sesión de docker -u https://index.docker.io/v1/

salida de la consola:

The push refers to a repository [docker.io/<username>/richcity]
adc9144127c1: Preparing 
4db5654f7a64: Preparing 
ce71ae73bc60: Preparing 
e8e980243ee4: Preparing 
d773e991f7d2: Preparing 
bae23f4bbe95: Waiting 
5f70bf18a086: Waiting 
3d3e4e34386e: Waiting 
e72d5d9d5d30: Waiting 
8d1d75696199: Waiting 
bdf5b19f60a4: Waiting 
c8bd8922fbb7: Waiting 
unauthorized: authentication required

1010deiMac:dockerspace whoami$ docker login -u <username> https://index.docker.io/v1/
Password: 
Login Succeeded
1010deiMac:dockerspace whoami$ docker push <username>/richcity 
The push refers to a repository [docker.io/<username>/richcity]
adc9144127c1: Pushed 
4db5654f7a64: Pushed 
ce71ae73bc60: Pushed 
e8e980243ee4: Pushed 
d773e991f7d2: Pushed 
bae23f4bbe95: Pushed 
5f70bf18a086: Pushed 
3d3e4e34386e: Pushing [=============>                                     ] 45.07 MB/165.4 MB
e72d5d9d5d30: Pushed 
8d1d75696199: Pushing [>                                                  ] 1.641 MB/118.1 MB
bdf5b19f60a4: Pushing [============>                                      ]   142 MB/568.4 MB
c8bd8922fbb7: Pushing [========================>                          ] 59.44 MB/121.8 MB
Gabriel Wu
fuente
5

Aunque el proceso estándar es iniciar sesión y luego presionar el registro de la ventana acoplable, el truco para superar este problema en particular es iniciar sesión proporcionando el nombre de usuario y la contraseña en la misma línea.

Entonces :

docker login -u xxx -p yyy sampledockerregistry.com/myapp 
docker push sampledockerregistry.com/myapp

Trabajos

mientras

docker login sampledockerregistry.com 
username : xxx
password : yyy
Login Succeeded

docker push sampledockerregistry.com/myapp

Falla

Sukhmeet Sethi
fuente
4

Incluso inicié sesión y verifiqué toda la configuración, ¡todavía no funciona!

Resultó que cuando construyo mi ventana acoplable, olvido poner mi nombre de usuario antes del nombre del repositorio

docker build docker-meteor-build 

(construir con éxito)

Y luego, cuando empujé a mi repositorio, usé

docker push myname/docker-meteor-build 

Mostrará el unauthorized authentication required

Entonces, la solución es el nombre de la compilación y el impulso debe ser exactamente el mismo

docker build myname/docker-meteor-build 
docker push myname/docker-meteor-build 
Tran tailandés
fuente
4

El problema al que se enfrentan los novatos es que tendemos a tratar el repositorio de Docker Hub como un repositorio de Maven y pensamos que podría contener muchos archivos, carpetas y otros contenidos diferentes.

Un repositorio de Docker, por otro lado, es solo una imagen única, no contiene nada más. Puede contener diferentes versiones de la misma imagen, pero solo contendrá una imagen.

Por lo tanto, asigne a su repositorio en docker hub el mismo nombre que la imagen que desea insertar en él y use su nombre de usuario de dockerhub como prefijo. Por ejemplo, si su nombre de usuario es myusername y el nombre de su imagen es docker-whale , asegúrese de nombrar su repositorio dockerhub como docker-whale y use los siguientes comandos para etiquetar y enviar su imagen al repositorio:

docker logout                                   # to make sure you're logged out and not cause any clashes
docker tag <imageId> myusername/docker-whale    # use :1.0.0 for specific version, default is 'latest'
docker login --username=myusername              # use the username/pwd to login to docker hub
docker push myusername/docker-whale             # use :1.0.0 for pushing specific version, default is 'latest'
Neeraj B.
fuente
1
Seguí recibiendo "denegado: el acceso solicitado al recurso está denegado" hasta que vi esta publicación. Finalmente, logré que mi primer "docker-push" funcionara sin tener que llevarlo en la mano con un tutorial. ¡Gracias un montón!
glendon
2

Si está publicando una nueva imagen privada por primera vez, asegúrese de que su suscripción admita esta imagen adicional.

Docker le permite tener 6 imágenes privadas nombradas, incluso si solo paga por 5, pero no para presionar esa sexta imagen. La falta de un mensaje informativo es confusa e irritante.

usuario1114056
fuente
2

Aquí la solución para mi caso (repos privados, plan de cuenta gratis)

https://success.docker.com/Datacenter/Solve/Getting_%22unauthorized%3A_authentication_required%22_when_trying_to_push_image_to_DTR

El nombre de la compilación de la imagen para insertar debe tener el mismo nombre que los repositorios.

Ejemplo: los repositorios en Docker Hub son: accountName / resposName nombre de compilación de la imagen "accountName / resposName" -> docker build -t accountName / resposName

luego escriba docker push accountName / resposName: latest

Eso es todo.

netz75
fuente
El enlace ahora está roto. Por favor, arreglalo.
Eric Bolinger
1

Lo que funcionó para mí fue crear un nuevo repositorio y cambiar el nombre de la imagen con

$ docker tag image_id myname/server:latest

Irene Giakoumi
fuente
1

Asegúrese de tener más espacios para imágenes privadas.

En mi caso, convertí un usuario en una organización y perdió su imagen privada gratuita, por lo que los empujes anteriores que funcionaron, ya no funcionaron.

Alex Soto
fuente
1

Mi problema fue un token de autorización no válido después de 5 minutos. El empujón tomó más de 5 minutos debido al tamaño de la imagen.

Lo solucioné aumentando la "Duración del token de autorización" a 10 minutos.

ingrese la descripción de la imagen aquí

Manuel Schmitzberger
fuente
¿Dónde encontraste este escenario? No pude encontrarlo.
Vic Seedoubleyew
2
Mi truco para evitar este problema fue ejecutar docker loginen otra ventana de terminal poco antes de que finalizara la carga
Vic Seedoubleyew
@VicSeedoubleyew Admin Area -> Settings -> CI/CD -> Container Registry. ruta URL: /admin/application_settings/ci_cd.
Manuel Schmitzberger
Gracias por la respuesta. Área de administración de qué? No veo nada de eso en dockerhub
Vic Seedoubleyew
Eso es para una instancia propia de gitlab. No estoy seguro de si puede configurar eso en dockerhub.
Manuel Schmitzberger
0

Asegúrese de que el nombre de su repositorio de Docker coincida con el nombre de su repositorio de Docker local. por ejemplo, digamos si su nombre de repositorio local es "kavashgar / nodjsapp"

entonces también debería tener un nombre de repositorio "kavashgar" en la ventana acoplable

smakintel.com
fuente
0

en su archivo de configuración ~ / .docker / config.json agregue

{
        "auths": {
             "https://index.docker.io/v1/": {
                        "auth": "XXXXXXXXXXXXX",
                        "email": "[email protected]"
                }
        }
}

donde XXXXX es la codificación base64 de su nombre de usuario: contraseña (se incluye :) de https://hub.docker.com

en mi caso tuve el mismo error con un tirón. el problema (en Windows) fue provocado por el proceso de ejecución de doble ventana acoplable, así que elimínelos a todos y reinicie un servicio y funciona.

Badr Bellaj
fuente
0

Ya ha habido buenas respuestas, pero me gustaría mencionar una: NO es necesario crear un repositorio antes de enviarlo.

El problema para mí fue que no configuré el nombre de usuario correcto de la cuenta en la que inicié sesión. Pero una vez que se establece el nombre de usuario correcto antes de la imagen (por ejemplo YOURNAME/YOURIMAGE) a través de su etiqueta, puede enviarlo sin crear un nuevo repositorio por adelantado.

sudo docker tag IMAGE:VERSION USERNAME/IMAGE:VERSION
sudo docker push USERNAME/IMAGE:VERSION
Blaszard
fuente
0

El mismo problema aquí, al presionar la imagen:

unauthorized: authentication required

Lo que hice:

docker login --username=yourhubusername [email protected]

Que imprimió:

--email está en desuso (pero el inicio de sesión aún se realizó correctamente)

Solución: utilice la sintaxis de inicio de sesión más reciente.

docker login

Le pedirá el nombre de usuario y la contraseña de forma interactiva. Entonces el empuje de la imagen simplemente funciona.

Incluso después de usar la nueva sintaxis, mi se ~/.docker/config.jsonve así después de iniciar sesión:

{
    "auths": {
        "https://index.docker.io/v1/": {}
    },
    "credsStore": "osxkeychain"
}

Entonces, la credencial está en el llavero de macOS.

Jing Li
fuente
0

Recibí un error similar para sudo docker push / sudo docker pull en el repositorio ecr.Esto se debe a que aws cli está instalado en mi usuario (abc) y docker está instalado en el usuario root.He intentado ejecutar sudo docker push en mi usuario (abc)

Se corrigió esto instalando aws cli en root, configurado aws usando aws configure en root y ejecutando sudo docker push to ecr en el usuario root

sathish g
fuente
0

Pruebe docker logoutprimero, luego vuelva a iniciar sesión condocker login

Rohman Masyhar
fuente
0

Puede mv el archivo xxx / .docker / config.json en algún lugar para manejarlo. Luego intente iniciar sesión nuevamente para crear un nuevo archivo config.json.

#mv xx/.docker/config.json xx/.docker/config_old.json
#docker login https://index.docker.io/v1/
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: YOUR USERNAME
Password: YOUR PASSWORD
WARNING! Your password will be stored unencrypted in /xxx/.docker/config.json.
Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded
seylul
fuente
0

Si estas corriendo windows 7 docker Registry

  1. Inicie la **Docker Quick Start terminal**ejecución (este terminal permite la conexión) Hasta que haya enviado imágenes, eso mantendrá vivo el token.
  2. Iniciar sesión docker login
  3. Asegúrate de etiquetar la imagen con el nombre de usuario.

    docker build -f Dockerfile -t 'username'/imagename

  4. empujar imagen

    docker image push username/imagename

Nota : nombre de la imagen todo en minúsculas

Dapper Dan
fuente
0

Tuve un problema similar.

Error response from daemon: Get https://registry-1.docker.io/v2/hadolint/hadolint/manifests/latest: unauthorized: incorrect username or password

Descubrí que incluso si inicio sesión correctamente con el docker logincomando, cualquier extracción falló. Traté de limpiar el ~/.docker/config.jsonpero nada mejoró.

Mirando en el archivo de configuración, he visto que las credenciales no se guardaron allí sino en un archivo "credsStore": "secretservice". En Linux, esta es la herramienta seahorseo Passwords and Keys. Revisé allí y limpié todos los inicios de sesión de Docker Hub. Después de esto, un nuevo inicio de sesión de Docker funcionó como se esperaba.

Alex
fuente