docker non autorisé: authentification requise - lors du push avec connexion réussie

101

En poussant l'image du docker (après une connexion réussie) de mon hôte, je reçois "non autorisé: authentification requise".

Détails ci-dessous.

-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
  • Version Docker: 1.9.1 (client et serveur)
  • http://hub.docker.com a également créé le dépôt (asamba / docker-whale).

Le / var / log / messages montre 403, je ne sais pas si ce docker. Voir ci-dessous.

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

Toute aide est appréciée, veuillez me le faire savoir si vous avez besoin de plus d'informations. J'ai aussi fait le push avec -f. Pas de chance!

Anand
la source
1
Il serait utile pour l'administrateur du site ainsi que pour les autres personnes qui recherchent des informations sur le même problème de cliquer sur la coche à côté de votre réponse pour la marquer comme "la" réponse :-) Vous êtes autorisé (même encouragé) à le faire sur Stack Overflow.
Cindy Meister

Réponses:

88

Modifier (13/08/2017)

Basé sur le commentaire de @ KaraPirinc, dans la version 17 de docker pour se connecter (étape 1),

docker login -u username -p password

J'ai également eu le même problème, c'est ainsi que je le résous.

Étape 1: connectez-vous à Docker Hub

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

Étape 2: créez un référentiel dans le hub docker . disons " mysqlserver: sql ".

docker push <user username>/mysqlserver:sql
GPrathap
la source
7
Cela devrait être la bonne réponse . docker loginfonctionne aussi sans les paramètres
blnc
5
Fonctionne parfaitement. Cependant, --email est obsolète .
IgorGanapolsky
(docker version 17): connexion docker -u nom d'utilisateur -p mot de passe
Yusuf Ismail Oktay
Merci pour la mise à jour. Je mettrai à jour la réponse en fonction de votre commentaire.
GPrathap
34

La solution que vous avez publiée ne fonctionne pas pour moi ...

C'est ce qui fonctionne pour moi:

  1. Créez le référentiel avec le nom souhaité.

  2. Lors de la validation de l'image, nommez l'image comme le référentiel, y compris le nom d'utilisateur <dockerusername>/desired-name. Par exemple radu/desired-name,.

Radu Gabriel
la source
# docker ps -a obtenir le nom du conainer --nostalgic_morse ici # docker commit -m "test" -a "alex" nostalgic_morse alexcpn / grpc # docker push alexcpn / grpc
Alex Punnen
28

D'ACCORD! ça ne fait rien; J'ai trouvé la solution. avec 403 Suspecté que le HTTP ne va pas à la bonne URL.

Modifiez le fichier contenant les identifiants de connexion stockés dans le fichier ~/.docker/config.jsonpar défaut généré par

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

to - Notez le changement de docker.io -> index.docker.io/v1. Voilà le changement.

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

J'espère que cela pourra aider.

Notez que le champ d'authentification doit être "nom d'utilisateur: mot de passe" encodé en base64. Par exemple: "nom d'utilisateur: mot de passe" encodé en base64 est "dXNlcm5hbWU6cGFzc3dvcmQ ="

donc votre fichier contiendrait:

"auth": "dXNlcm5hbWU6cGFzc3dvcmQ="
Anand
la source
Vous m'avez fait gagner du temps! Solution parfaite pour moi aussi.
Marco Lenzo
7
A travaillé pour moi aussi. Voici la même chose depuis la ligne de commande:sudo docker login -e [email protected] -u someuser -p somepass https://index.docker.io/v1/
Banjer
2
Merci @Banjer, le paramètre -e est cependant obsolète, et sudo ne devrait pas être utilisé pour la plupart des personnes qui ont configuré correctement leur système. Une meilleure solution serait: docker login -u someuser https://index.docker.io/v1/Cela demandera le mot de passe, l'empêchant de se retrouver dans l'historique des commandes.
erb
19

si vous utilisez heroku, assurez-vous de ne pas oublier de "heroku container: login" avant de pousser.

bjoern
la source
7

Je rencontrais un problème similaire avec un message d'erreur tout aussi inutile, mais il s'est avéré que c'était parce que j'essayais de pousser une image que j'avais construite contre une instance gérée par docker-machine.

Lorsque je me suis connecté à l'instance elle-même, je l'ai fait docker loginet docker pushtout a bien fonctionné.

atomic77
la source
merci, la connexion docker crée automatiquement le fichier de configuration comme décrit au lien
Felix
7

J'ai eu le même problème mais je l'ai corrigé avec push avec l'URL spécifiée. comme: connexion docker -u https://index.docker.io/v1/

sortie de la console:

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
la source
5

Bien que le processus standard consiste à se connecter puis à pousser vers le registre docker, l'astuce pour surmonter ce problème particulier consiste à se connecter en fournissant un nom d'utilisateur et un mot de passe dans la même ligne.

Alors :

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

Travaux

tandis que

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

docker push sampledockerregistry.com/myapp

Échoue

Sukhmeet Sethi
la source
4

Même si je me suis connecté et vérifié toute la configuration, cela ne fonctionne toujours pas !!!

Il s'est avéré que lorsque je construis mon docker, j'oublie de mettre mon nom d'utilisateur avant le nom du repo

docker build docker-meteor-build 

(construire avec succès)

Et puis quand j'ai poussé vers mon référentiel, j'ai utilisé

docker push myname/docker-meteor-build 

Il montrera le unauthorized authentication required

Donc, la solution est alors le nom de la construction et le push doit être exactement le même

docker build myname/docker-meteor-build 
docker push myname/docker-meteor-build 
Thai Tran
la source
4

Le problème auquel les débutants sont confrontés est que nous avons tendance à traiter le référentiel Docker Hub comme un référentiel maven et à penser qu'il pourrait contenir de nombreux fichiers, dossiers et autres contenus différents.

Un référentiel docker, quant à lui, n'est qu'une seule image, il ne contient rien d'autre. Il peut contenir différentes versions de la même image, mais il ne contiendra qu'une seule image.

Alors, nommez votre référentiel sur Docker Hub du même nom que l'image que vous souhaitez y insérer et utilisez votre nom d'utilisateur dockerhub comme préfixe. Par exemple, si votre nom d'utilisateur est myusername et que le nom de votre image est docker-whale , assurez-vous de nommer votre référentiel dockerhub comme docker-whale et utilisez les commandes ci-dessous pour baliser et pousser votre image vers le référentiel:

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.
la source
1
J'ai continué à recevoir "refusé: l'accès demandé à la ressource est refusé" jusqu'à ce que je voie ce message. Enfin, j'ai réussi à faire fonctionner mon tout premier "docker-push" sans être tenu par un tutoriel. Merci beaucoup!
glendon
2

Si vous envoyez une nouvelle image privée pour la première fois, assurez-vous que votre abonnement prend en charge cette image supplémentaire.

Docker vous permet de nommer 6 images privées, même si vous n'en payez que 5, mais pas de pousser cette 6ème image. L'absence de message informatif est déroutante et irritante.

user1114056
la source
2

Voici la solution pour mon cas (repos privé, plan de compte gratuit)

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

Le nom de construction de l'image à pousser doit avoir le même nom que les dépôts.

Exemple: le repos sur docker hub est: accountName / resposName nom de construction de l'image "accountName / resposName" -> docker build -t accountName / resposName

puis tapez docker push accountName / resposName: latest

C'est tout.

netz75
la source
Le lien est maintenant rompu. Regle-le, s'il te plait.
Eric Bolinger
1

Ce qui a fonctionné pour moi a été de créer un nouveau référentiel et de renommer l'image avec

$ docker tag image_id myname/server:latest

Irene Giakoumi
la source
1

Assurez-vous d'avoir plus d'emplacements pour les images privées.

Dans mon cas, j'ai converti un utilisateur en organisation et il a perdu une image privée gratuite, donc les poussées précédentes qui fonctionnaient ne fonctionnaient plus.

Alex Soto
la source
1

Mon problème était un jeton d'autorisation non valide après 5 minutes. La poussée a pris plus de 5 minutes en raison de la taille de l'image.

Je l'ai corrigé en augmentant la "Durée du jeton d'autorisation" à 10 minutes.

entrez la description de l'image ici

Manuel Schmitzberger
la source
Où avez-vous trouvé ce paramètre? Je n'ai pas pu le trouver.
Vic Seedoubleyew
2
Mon hack pour éviter ce problème était de s'exécuter docker logindans une autre fenêtre de terminal peu de temps avant la fin du téléchargement
Vic Seedoubleyew
@VicSeedoubleyew Admin Area -> Settings -> CI/CD -> Container Registry. chemin url: /admin/application_settings/ci_cd.
Manuel Schmitzberger
Merci d'avoir répondu. Zone d'administration de quoi? Je ne vois rien de tout cela sur dockerhub
Vic Seedoubleyew
C'est pour une propre instance gitlab. Je ne sais pas si vous pouvez configurer cela sur dockerhub.
Manuel Schmitzberger
0

Assurez-vous que le nom de votre référentiel Docker correspond au nom de votre référentiel Docker local. par exemple, disons si votre nom de dépôt local "kavashgar / nodjsapp"

alors vous devriez également avoir un nom de dépôt "kavashgar" dans le hub de docker

smakintel.com
la source
0

dans votre fichier de configuration ~ / .docker / config.json add

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

où XXXXX est l'encodage base64 de votre nom d'utilisateur: mot de passe (le: est inclus) de https://hub.docker.com

dans mon cas, j'ai eu la même erreur avec une traction. le problème (sous Windows) a été provoqué par le double processus de fonctionnement de docker, donc tuez-les tous et redémarrez un service et cela fonctionne.

Badr Bellaj
la source
0

Il y a déjà eu de bonnes réponses, mais je voudrais en mentionner une - Vous n'avez PAS besoin de créer un référentiel à l'avance avant de le pousser.

Le problème pour moi était que je n'ai pas défini le nom d'utilisateur correct du compte auquel je me suis connecté. Mais une fois que le nom d'utilisateur correct est défini avant l'image (par exemple YOURNAME/YOURIMAGE) via sa balise, vous pouvez le pousser sans créer un nouveau référentiel à l'avance.

sudo docker tag IMAGE:VERSION USERNAME/IMAGE:VERSION
sudo docker push USERNAME/IMAGE:VERSION
Blaszard
la source
0

Même problème ici, lors de la poussée de l'image:

unauthorized: authentication required

Ce que j'ai fait:

docker login --username=yourhubusername [email protected]

Ce qu'il a imprimé:

--email est obsolète (mais la connexion a quand même réussi)

Solution: utilisez la dernière syntaxe de connexion.

docker login

Il demandera à la fois le nom d'utilisateur et le mot de passe interactive. Ensuite, la poussée d'image fonctionne.

Même après avoir utilisé la nouvelle syntaxe, mon ~/.docker/config.jsonressemble à ceci après la connexion:

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

Les informations d'identification se trouvent donc dans le trousseau de macOS.

Jing Li
la source
0

J'ai reçu une erreur similaire pour sudo docker push / sudo docker pull sur le référentiel ecr.C'est parce que aws cli est installé dans mon utilisateur (abc) et docker installé dans l'utilisateur root.J'ai essayé d'exécuter sudo docker push sur mon utilisateur (abc)

Correction de cela en installant aws cli en root, en configurant aws à l'aide de aws configure en root et en exécutant sudo docker push to ecr sur l'utilisateur root

sathish g
la source
0

Essayez d' docker logoutabord, puis reconnectez-vous avecdocker login

Rohman Masyhar
la source
0

Vous pouvez mv le fichier xxx / .docker / config.json quelque part pour le gérer. Ensuite, essayez de vous connecter à nouveau pour créer un nouveau fichier 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
la source
0

Si tu cours windows 7 docker Registry

  1. Démarrer l' **Docker Quick Start terminal**exécution (ce terminal active la connexion) Jusqu'à ce que vous ayez poussé des images, cela gardera le jeton en vie.
  2. S'identifier docker login
  3. Assurez-vous de marquer l'image avec le nom d'utilisateur

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

  4. image push

    docker image push username/imagename

Remarque : le nom de l'image est tout en minuscules

Dapper Dan
la source
0

J'avais un problème similaire.

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

J'ai découvert que même si je me connectais avec succès avec la docker logincommande, toute extraction échouait. J'ai essayé de nettoyer le~/.docker/config.json mais rien ne s'est amélioré.

En regardant dans le fichier de configuration, j'ai vu que les informations d'identification n'étaient pas enregistrées là-bas mais dans un fichier "credsStore": "secretservice". Sous Linux, il s'agit de l' outil seahorseou Passwords and Keys. J'ai vérifié là-bas et je nettoie toutes les connexions du hub docker. Après cela, une nouvelle connexion Docker a fonctionné comme prévu.

Alex
la source