refusé: l'accès demandé à la ressource est refusé: docker


372

Je suis en train de suivre ce lien pour créer ma première image Docker et ça s'est bien passé et maintenant j'essaie de pousser cette image dans mon référentiel Docker à partir de ce lien . Mais chaque fois que j'essaie de pousser cette image dans le référentiel, j'ai ce type d'erreur.

denied: requested access to the resource is denied

entrez la description de l'image ici

Quelqu'un pourrait-il me donner un indice sur ce problème? Toute aide serait appréciée.

Remarque: J'ai réussi à me connecter à Docker


Assurez-vous que vous ne faites pas cette erreur: stackoverflow.com/a/59626146/4954434
Jithin Pavithran

Assurez-vous de confirmer votre e-mail. Si vous pensez qui ferait une chose aussi stupide, je n'ai pas confirmé mon e-mail avant de pousser.
Luv33preet

Réponses:


553

Vous devrez peut-être basculer votre dépôt Docker sur privé avant de le pousser.

Merci à la réponse fournie par Dean Wu et à ce commentaire de ses , avant de pousser, pensez à vous déconnecter , puis connectez-vous depuis la ligne de commande à votre compte hub docker

# you may need log out first `docker logout` ref. https://stackoverflow.com/a/53835882/248616
docker login

Selon les documents :

You need to include the namespace for Docker Hub to associate it with your account.
The namespace is the same as your Docker Hub account name.
You need to rename the image to YOUR_DOCKERHUB_NAME/docker-whale.

Donc, cela signifie que vous devez marquer votre image avant de pousser:

docker tag firstimage YOUR_DOCKERHUB_NAME/firstimage

et alors vous devriez pouvoir le pousser.

docker push YOUR_DOCKERHUB_NAME/firstimage

43
Pas pour moi. J'ai essayé toutes les combinaisons de [host]/[namespace]/[repo]et toujours la même erreur (ce qui signifie que j'ai des organisations et mon compte comme espace de noms). Même essayé docker login .... Je ne peux pas pousser: - |
nicerobot

1
hii je suis votre commande got Erreur --- Réponse d'erreur du démon: Aucune image de ce type: ubuntu-nodejs: latest
Yash

34
Cette réponse n'aurait pas dû être marquée comme acceptée! La solution proposée ne fonctionne clairement pas comme d'autres l'ont indiqué.
SamDevx

6
J'ai eu le même problème et il s'est avéré que je n'étais pas connecté correctement. "connexion docker" se comporte de manière maladroite, il a montré "connexion réussie" même lorsque j'ai entré un mauvais mot de passe. Donc, pour me connecter de manière appropriée, j'ai utilisé "connexion docker <url> --username = <username>". Après cela, la «poussée de docker» a fonctionné comme prévu.
Devesh Chanchlani

2
Cette réponse n'est pas complète et n'a pas fonctionné pour moi. Venu S a fourni une réponse complète qui a résolu ce problème pour moi.
rm.rf.etc

184

J'ai eu le même problème en suivant le cours Docker pour débutant. J'ai résolu le problème en effectuant un docker loginappel avant le docker push.


9
FWIW, je recevais une erreur lors de l'obtention des informations d' identificationdocker login . sudo docker logintravaillé pour moi. Cela m'a permis de pousser mon repo privé.
johnsampson

2
Apparemment, le webinaire Docker est obsolète.
Luís de Sousa


80

J'ai eu le même problème, mais la réponse acceptée donnée ici n'a pas fonctionné pour moi. J'ai essayé quelques étapes et j'ai pu me déplacer pour finalement le pousser. J'espère que cela aide quelqu'un.

Voici les étapes qui ont fonctionné pour moi:

1) Connectez-vous au docker.

docker login -u sirimalla

2) Marquez la création de votre image

mon nom d'image est ici: mylocalimage et par défaut, il a la balise: latest
et mon nom d'utilisateur est: sirimalla comme enregistré avec le docker cloud, et j'ai créé un référentiel public nommé: dockerhub

donc mon dépôt personnel devient maintenant: sirimalla / dockerhub et je veux pousser mon image avec le tag:myfirstimagepush

J'ai marqué comme ci-dessous:

docker tag mylocalimage:latest sirimalla/dockerhub:myfirstimagepush

3) Poussé l'image vers mon référentiel de docker personnel comme ci-dessous

docker push sirimalla/dockerhub:myfirstimagepush

Et cela a réussi à être transféré vers mon dépôt personnel de docker.


2
Cette réponse a résolu mon problème. Ce devrait être la réponse acceptée. L'autre réponse n'est pas complète et n'a pas fonctionné pour moi. Par exemple, l'autre réponse ne fait aucune mention docker login. Jusqu'à arriver à ce fil, je ne savais pas docker login.
rm.rf.etc

en général , vous devez utiliser sudo préfixer toutes vos commandes de projectatomic.io/blog/2015/08/...
wmitchell

Avertissement avec sudo - voir ma réponse
rhoerbe

1
C'était le chiot.
Dave Hodgkinson

1
Oui, cette réponse n'a résolu mon problème. Veuillez référer celui qui veut résoudre ce problème.
Maha Lak

42

Il est également important de noter que lorsque vous marquez votre image, vous la marquez en utilisant l' espace de noms , puis votre référentiel / mydevrepo . Cela m'a dérouté lorsque j'ai suivi les documents Docker. Après cela, j'ai utilisé:

docker login

Et puis j'ai poussé mon image en utilisant le «nom balisé» .

docker push {namespace}/mydevrepo

39

Utilisez les commandes ci-dessous:

$ docker login
<enter user name and password for Docker Hub Repository>

$ docker tag first-image {docker-hub-username}/{default-repo-folder-name}:first-image

$ docker push {docker-hub-username}/{default-repo-folder-name}:first-image

Par exemple, j'ai un référentiel public comme manjeet86 / docker-repo, donc les commandes seraient:

$ docker tag first-image manjeet86/docker-repo:first-image

$ docker push manjeet86/docker-repo:first-image

Voir juste :au lieu de /cela était l'astuce. Ça marche pour moi. Je ne sais pas si cela vous permet de taguer /aussi bien à la place de :mais cela peut être dans un autre but.

https://docs.docker.com/engine/reference/commandline/tag/#examples


1
C'est ce qui a fonctionné pour moi, en utilisant :au lieu de /, merci.
Kris

Explication possible du problème dans ce fil: github.com/moby/moby/issues/31760#issuecomment-309812486
gp.

Merci, c'était tout. Doit être la réponse acceptée à mon humble avis :)
Nk54

10

La façon dont Docker gère les ID utilisateur et les référentiels peut être un peu déroutante. Supposons que vous créez un compte utilisateur xyz sur le docker hub. Le nouveau compte établit automatiquement un espace de noms xyz. Ensuite, vous créez un référentiel appelé myrepo. Le nom du référentiel sera en fait xyz/myrepo.

Pour pousser une image, vous devez faire:

docker push docker.io/xyz/myrepo

Vous pouvez ajouter ": latest" ou une balise différente si nécessaire.

Si vous obtenez le requested access to the resource is deniedmessage d'erreur:

  1. Accédez à https://hub.docker.com/ et connectez-vous en tant que xyz.
  2. Cliquez sur votre référentiel xyz / myrepo.
  3. Cliquez sur Collaborateurs.
  4. Ajoutez xyz en tant que collaborateur.

cela signifie donc que nous ne pouvons pas pousser les images à partir d'un référentiel public tiers?
sdinesh94

N'a pas fonctionné pour moi :(
Nom1fan

10

Je ne sais pas ce qui est arrivé au docker hub, mais aucune des solutions publiées n'a fonctionné pour moi. Voici la solution de contournement qui a fini par fonctionner pour moi en janvier 2018:

  1. Accédez à hub.docker.com et changez votre référentiel en privé
  2. Dans votre coquille, faites:

docker images

REPOSITORY TAG IMAGE ID CREATED SIZE verse_gapminder_gsl latest 023ab91c6291 3 minutes ago 1.975 GB verse_gapminder latest bb38976d03cf 13 minutes ago 1.955 GB rocker/verse latest 0168d115f220 3 days ago 1.954 GB

docker tag bb38976d03cf dockhubusername/verse_gapminder:mytag

docker login docker.io

docker push dockhubusername/verse_gapminder:mytag

  1. Revenez au Docker Hub et changez le repo en public. Cela a fonctionné pour moi.

8

Docker a également une limite sur le nombre de référentiels privés que vous pouvez avoir. Si vous créez un référentiel privé en poussant à partir de votre machine locale, il créera le référentiel mais rien de plus ne pourra y être poussé ou retiré, et vous obtiendrez l'erreur "l'accès demandé à la ressource est refusé".


comment toujours pousser comme repo public?
Raja Anbazhagan

7

OS: Ubuntu16.04

Raison: j'ai supprimé le fichier de configuration du client ( ~ / .docker / config.json )

Solution:

  • Redémarrez docker.
    redémarrage du docker de service .
  • Il doit saisir des informations de connexion, puis génère automatiquement un fichier de configuration.
    connexion docker --username = yourdockerhubername --email=youremail@company.com

1
C'était la seule solution qui fonctionnait pour moi. J'avais mis à jour mon Docker puis pour une raison quelconque, mvn dockerfile: push a échoué avec cette exception. La suppression de ce config.json l'a corrigé.
2018 à 9h23

Cela m'a également aidé. Je me suis rendu compte que pour me connecter, je ne devrais pas mettre l'URL ou si je dois spécifier l'URL du docker hub, je devrais le mettredocker login https://index.docker.io/v1/ -u=yourusername
Ronan Quillevere

7

Mon problème était très simplement d'utiliser des caractères non valides (un extra /) dans mon nom d'image:

myusername/something/image

est un nom d'image non valide. Essayez mon nom d'utilisateur / quelque chose-image. J'espère que cela aide quelqu'un.


Un message d'erreur si horrible et non spécifique! Je faisais la même chose. En outre, il n'autorisera pas les caractères spéciaux répétés , par exemple __.
ijoseph

Cela fonctionne pour moi, merci!
Kenny Lee

6

J'ai eu le même problème aujourd'hui. La seule chose qui a fonctionné pour moi a été de se connecter explicitement à "docker.io" :

docker login docker.io

J'ai essayé divers autres noms et la connexion semble fonctionner, mais cela entraînera plus tard l'erreur suivante.

l'accès demandé à la ressource est refusé


2
C'est aussi ce qui a résolu le problème pour moi. J'ai essayé docker loginsans succès, mais l'explicite docker.ioà la fin a fait l'affaire.
jooks

C'était tout pour moi
Glitcher

la connexion explicite à docker.io ne fonctionnait pas pour moi. La connexion a fonctionné dans le passé, a cessé de fonctionner maintenant.
rhoerbe

5

J'étais aussi avec ce problème, j'ai testé les solutions ici présentes mais en vain, j'étais correctement connecté, au moins en fonction de la sortie de docker loginmais je ne pouvais toujours pas pousser l'image. Ce qui a finalement fonctionné était simplement de faire:

docker logout

Et là docker loginencore, c'était si insignifiant. Je ne sais pas ce qui s'est passé, mais forcer la reconnexion a fonctionné.


1
Ça m'a aussi aidé!
Levente Orbán

1
Ouais avec la déconnexion, ça revient travailler pour moi. Je vous remercie!
Nam G VU

4

Si vous rencontrez ce problème lors de l'utilisation d'Azure Container Registry, vous pouvez le résoudre en vous connectant d'abord à votre registre.

docker login yourregistry.azurecr.io

Et puis marquez votre image pour qu'elle corresponde au nom d'hôte de votre registre.

docker image tag yourimagename:[version] yourregistry.azurecr.io/yourimagename:[version]

Et enfin, poussez-le.

docker push yourregistry.azurecr.io/yourimagename:[version]

1
Venant d'Azure c'est ce qui a aidé! Ce n'est pas l'espace de noms mais le nom d'hôte du registre qui est la première partie de la balise!
binaryguy

4

Pour ceux qui tentent de pousser l'image vers leur propre Nexus Repository Manager, procédez comme suit:

1) Connectez-vous à votre Nexus Repository Manager (le port 8443 est associé à un référentiel hôte Docker spécifique)

sudo docker login xxx.mydomain.com:8443

2) Marquer l'image AVEC VOTRE SERVEUR IP / DNS NEXUS

sudo docker tag myimage:latest xxx.mydomain.com:8443/myimage:1.0.0

3) Poussez l'image

sudo docker push xxx.mydomain.com:8443/myimage:1.0.0

J'ai eu un problème avec le plugin jenkins docker faisant toujours référence à docker.io. Le marquage comme xxx.mydomain.com:8443/myimage:1.0.0 a résolu le problème. Assurez-vous d'omettre le procotol et / v2 / stuff.
Himmet Avsar

pourquoi ajouter un port. Et dont le port à ajouter près de xxx.mydomain.com. 8443 est une botte à ressort pour https. Et si c'est une application angulaire
P Satish Patro

1
@PSatishPatro Lorsque votre référentiel se résout en un port http / https spécifique, la balise devra savoir où le pousser (puisque vous ne lui dites pas où aller - en tant que paramètre), comme mentionné ci-dessus, il doit être le URL exacte comme référentiel complet de votre Nexus.
Phil

3

Connectez-vous depuis l'application. Je n'ai essayé que depuis le terminal sans succès.

Ceci est la version 17.06.1

entrez la description de l'image ici


Sur MacOS, c'était la solution pour moi.
Vagari

3

Solution de travail simple:

Allez ici https://hub.docker.com/pour créer un référentiel PRIVÉ avec un nom par exemple, johnsmith/private-repositoryc'est celui que NAME/REPOSITORYvous utiliserez pour votre image lors de la construction de l'image.

  • Première, docker login

  • Deuxièmement, j'utilise " docker build -t johnsmith/private-repository:01 ." pour créer l'image, et j'utilise " docker images" pour confirmer l'image créée comme dans cette boîte jaune ci-dessous: (désolé, je ne peux pas coller le format du tableau mais la chaîne de texte uniquement)

johnsmith / private-repository (REPOSITORY) 01 (TAD) c5f4a2861d6e (ID D'IMAGE) Il y a 2 jours (CREATED) 305MB (SIZE)

  • Troisièmement, j'utilise docker push johnsmith/private-repository:01

Terminé!


2

Ma réponse est liée aux problèmes similaires à Azure DevOps que j'ai rencontrés avec le pipeline commun suivant (c'est plus spécifique mais cela pourrait aider quelqu'un à gagner du temps):

  1. Obtenir des sources sur github
  2. Créer une image docker
  3. Poussez l'image Docker vers Dockerhub

L'erreur que j'ai reçue au push denied: requested access to the resource is deniedm'a envoyé ici.

Veuillez faire attention à la variable $(Build.Repository.Name)incluse dans le nom de votre image. C'est par défaut le nom du référentiel de github, mais pour que votre push fonctionne, il devrait l'être dockerhub_account_username/your_dockerhub_repository_name.

Remplacez $(Build.Repository.Name)par dockerhub_account_username/your_dockerhub_repository_namedans votre champ de nom d'image pour les étapes de génération et de transmission.

Cela est nécessaire à l'API Dockerhub pour savoir où pousser l'image.


2

Cela a fonctionné après avoir changé le " login docker https://hub.docker.com " en " login docker docker.io " et fourni le nom d'utilisateur et le mot de passe.

Suivez ensuite les commandes ci-dessous:

docker tag local-image:tagname new-repo:tagname

docker push new-repo:tagname

REMARQUE: "new-repo" contiendra "Docker ID + Repo name"

Ici, j'ai créé le dépôt "ubuntu" dans le Docker Hub avant d'exécuter la commande ci-dessous.

Exemple:

docker tag alok/ubuntu:latest aloktiwari2007/ubuntu:latest

docker push aloktiwari2007/ubuntu:latest

le point important pour moi était le nom de variable dans la commande de balise docker qu'il devrait suivre - <dockeruserid> / <nom du référentiel distant>: <tag>. Le même identifiant de balise doit être utilisé dans la commande push.
Tanmay Patil

1

S'il échoue toujours après docker login, assurez-vous que le référentiel vers lequel vous essayez de pousser a été créé en premier lieu.


1

J'ai aussi ce problème. Il s'avère que j'utilise le niveau gratuit et que j'essaie de pousser plus d'une image dans le référentiel privé. Rendre 1 image privée et le reste public a fonctionné pour moi.


1

Dans mon cas, je poussais vers une organisation où je fais partie d'une équipe disposant des autorisations d'administrateur sur le référentiel.

donc ma commande push était: docker push org-name/image-name

J'ai pu pousser avec succès vers nom d'utilisateur / nom-image mais pas vers l'organisation. J'ai vérifié trois fois les autorisations. Rien n'a fonctionné.

La solution était de supprimer le dépôt du docker hub et de le repousser à nouveau en utilisant: docker push org-name/image-name

Pour ce que ça vaut, je pense que le dépôt a été initialement poussé avant que le compte ne soit converti en organisation.


1

Donc, au cas où cela serait utile à n'importe qui ...
J'ai eu ce même problème et voici quel était mon problème et le FIX.

  • J'avais un ordinateur sur mon réseau de test nommé «galaxy».
  • J'ai configuré le registre Docker à l'aide de la commande d'exécution suivante:

    sudo docker run -d 
    --restart=always \
    --name registry \
    -v /srv/registry/certs:/certs \
    -v /srv/registry/storage:/var/lib/registry \
    -e REGISTRY_HTTP_ADDR=0.0.0.0:443 \
    -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/galaxy.cert \
    -e REGISTRY_HTTP_TLS_KEY=/certs/galaxy.key \
    -p 443:443 \
    registry:2
    

    Ensuite, j'essayais de pousser une image vers la galaxie à partir d'un ordinateur portable sur le réseau, alors j'ai fait ceci:

    docker login galaxy
    

    Cela me donnerait une erreur qui dirait:

    Login did not succeed, error: Error response from daemon: 
        Get https://galaxy/v2/: x509: certificate signed by unknown authority
    

    Curieusement, la solution à ce problème était de faire une connexion comme celle-ci:

    docker login galaxy:443
    

    Cela s'est traduit par une connexion réussie.

    Alors j'ai essayé de pousser l'image de mon ordinateur portable vers «galaxy».
    J'avais déjà créé une balise pour mon image qui ressemblait à ceci:

    galaxy/myImage:0.0.1
    

    J'ai donc essayé de le pousser en faisant ceci:

    docker push galaxy/myImage:0.0.1
    

    À laquelle j'ai obtenu la réponse:

    The push refers to repository [docker.io/galaxy/myImage]
    7ab460574f86: Preparing 
    1aecaf56754d: Preparing 
    1df1b5f06ca4: Preparing 
    denied: requested access to the resource is denied
    

    Curieusement, j'ai découvert que le correctif consistait à marquer d'abord l'image comme suit:

    docker tag myImage:0.0.1 galaxy:443/myImage:0.0.1
    

    ... puis faites le push comme ceci:

    docker push galaxy:443/myImage:0.0.1
    

    Donc, pour une raison quelconque, j'ai dû inclure le port dans la balise en tant que partie requise du nom du référentiel.



    J'espère que cela aide les autres.


  • 1

    toutes les réponses précédentes étaient correctes, je veux juste ajouter une information que j'ai vu n'a pas été mentionnée;

    Si le projet est un projet privé pour pousser correctement l'image, vous devez configurer un jeton d'accès personnel ou déployer un jeton avec la clé read_registry activée.

    source: https://gitlab.com/help/user/project/container_registry#using-with-private-projects

    j'espère que cela vous sera utile (même si la question est publiée jusqu'à présent dans le temps)


    1

    Cette réponse est autant pour mon avenir que pour n'importe qui d'autre. J'ai rencontré ce problème exact lorsque je suis connecté correctement, mais j'essaie de pousser vers un dépôt privé lorsque mon nombre de dépôts privés est supérieur ou égal à la limite autorisée par mon plan.

    Je ne sais pas exactement comment j'ai pu créer trop de dépôts privés, mais si mon plan comprend 5 dépôts privés, et en quelque sorte j'en ai 6, alors c'est l'erreur que je vais recevoir:

    denied: requested access to the resource is denied

    Dans mon cas, il est possible que je me retrouve avec trop de référentiels privés car ma visibilité par défaut est définie sur privé:

    Visibilité par défaut

    C'est là que vous déterminez le nombre de dépôts privés que vous pouvez avoir:

    Plans de facturation

    Une fois que j'ai rendu public le dépôt problématique, le problème est devenu évident:

    Rendre le référentiel privé 5 sur 5


    1

    J'espère vraiment que cela aidera quelqu'un (qui regarde les réponses finales en premier comme moi):

    J'ai toujours essayé de taper

    docker push user/repo/tag
    

    Au lieu

    docker push user/repo:tag
    

    Depuis que j'ai aussi fait mon tag comme ça:

    docker tag image user/repo/tag
    

    ... tout l'enfer s'est perdu.

    J'espère sincèrement que vous ne répéterez pas mon erreur. J'ai perdu environ 30 minutes à ce sujet ...


    1

    Je suis lent à ajouter une autre réponse, mais il docker loginmanque un cas de bord à la réponse acceptée et aux réponses restantes pour résoudre les problèmes que d'autres déclarent dans les commentaires.

    docker login <private-repo-host>:<port>

    L'accent mis sur la portnécessité d'être saisi est probablement la solution pour ceux qui recherchent encore. docker loginou docker login <private-repo-host>peut se connecter sans problème, mais quand vient le temps de pousser les images, vous obtiendrez la même erreur que OP.

    Autrement dit, vous pouvez vous connecter sans définir d'hôte ou de port et toujours obtenir:

    ...

    Connexion réussie

    Dans mon cas, j'utilise un Docker-Registry intégré à GitLab, qui a été configuré pour utiliser le port 4567. Il peut être judicieux de vérifier à partir de quel port le registre doit être accessible. Sans spécifier que le port docker login <our.gitlab.host>se connecterait avec succès, mais donnez le même problème que l'OP a demandé:

    ...

    La poussée se réfère au référentiel [...]

    refusé: accès interdit

    Si vous utilisez docker.io/dockerhub, vous n'aurez probablement pas ce problème, mais si vous avez une solution de registre auto hébergée / privée, la probabilité augmente, vous devez vous connecter explicitement en utilisant à la fois l'hôte et le port pour le registre docker. .


    Merci, le plus utile!
    Alfabravo

    1

    Ne laissez pas induire en erreur vers le nom de la balise.
    Mon approche pour résoudre ce problème:

    Command 1(Create Tag): docker tag my-nginx:latest rsachde/nginx-repository/trys:1.0 (Didn't push)
    Command 2(Push): docker push rsachde/nginx-repository/try:1.0 
    

    Production:

    refusé: l'accès demandé à la ressource est refusé


    Command 1.1(Create Tag): docker tag my-nginx:latest rsachde/nginx-repository/:trys 
    Command 2.2(Push): docker push rsachde/nginx-repository:trys 
    

    Production:

    trys: digest: sha256: 405b6f0ae25772ef71b8f59fd6a56ff9b426f50bd24bac2b5db41f65efd3387c taille: 1365

    Tromper est Tag, assurez-vous de bien comprendre cela.


    1

    le moyen le plus simple est d'utiliser le bureau docker (pour Windows 10 ou supérieur et mac)

    première inscription au docker hub en fournissant dockerID

    puis cliquez sur l'icône du bureau docker sur votre machine et -> Préférences -> puis connectez-vous à celle-ci en utilisant docker hub id / mot de passe et mot de passe.

    entrez la description de l'image ici


    0

    renommer votre image en nom d'utilisateur / nom-image docker tag votre-image-actuelle / image-actuelle dockerhub-nom-d'utilisateur / un-nom: votre-tag (exemple: dernier)


    0

    Essayez de vous déconnecter de l'application "Docker pour Windows" et de vous déconnecter du site https://hub.docker.com/ et après avoir effectué la "connexion Docker " et la "poussée Docker ". Ça m'a aidé.

    En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
    Licensed under cc by-sa 3.0 with attribution required.