negato: l'accesso richiesto alla risorsa è negato: finestra mobile


372

Sto seguendo questo link per creare la mia prima immagine docker ed è andata a buon fine e ora sto provando a spingere questa immagine nel mio repository docker da questo link . Ma ogni volta che sto cercando di inserire questa immagine nel repository, ho riscontrato questo tipo di errore.

denied: requested access to the resource is denied

inserisci qui la descrizione dell'immagine

Qualcuno potrebbe darmi qualche suggerimento per questo problema? Qualsiasi aiuto sarebbe apprezzato.

Nota: ho effettuato correttamente l'accesso alla finestra mobile


Assicurarsi che non stanno facendo questo errore: stackoverflow.com/a/59626146/4954434
Jithin Pavithran

Assicurati di confermare la tua email. Se stai pensando chi farebbe una cosa così stupida, non ho confermato la mia e-mail prima di spingere.
Luv33preet

Risposte:


553

Potrebbe essere necessario cambiare il repository della finestra mobile in privato prima del push della finestra mobile.

Grazie alla risposta fornita da Dean Wu e questo commento di ses , prima di spingere, ricordati di uscire , quindi accedi dalla riga di comando al tuo account hub docker

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

Secondo i documenti :

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.

Quindi, questo significa che devi taggare la tua immagine prima di premere:

docker tag firstimage YOUR_DOCKERHUB_NAME/firstimage

e quindi dovresti essere in grado di spingerlo.

docker push YOUR_DOCKERHUB_NAME/firstimage

43
Non per me. Ho provato tutte le combinazioni [host]/[namespace]/[repo]e ancora lo stesso errore (nel senso che ho organizzazioni e il mio account come spazio dei nomi). Anche provato docker login .... Non riesco a spingere: - |
Nicerobot,

1
ciao seguo il tuo comando ottenuto Errore --- Risposta di errore dal demone: Nessuna immagine simile: ubuntu-nodejs: latest
Yash

34
Questa risposta non avrebbe dovuto essere contrassegnata come accettata! La soluzione fornita chiaramente non funziona come altri hanno indicato.
SamDevx,

6
Ho avuto lo stesso problema e si è scoperto che non avevo effettuato l'accesso correttamente. "login docker" si comporta in modo imbarazzante, ha mostrato "login riuscito" anche quando ho inserito una password errata. Quindi per accedere in modo appropriato, ho usato "login docker <url> --username = <username>". Pubblica questo, "docker push" ha funzionato come previsto.
Devesh Chanchlani,

2
Questa risposta non è completa e non ha funzionato per me. Venu S ha fornito una risposta completa che ha risolto questo problema per me.
rm.rf.etc,

184

Ho avuto lo stesso problema durante il corso per principianti docker. Ho risolto il problema facendo una docker loginchiamata push prima della finestra mobile.


9
FWIW, mi è stato sempre credenziali di errore ottenendo su docker login. sudo docker loginha funzionato per me. Questo mi ha permesso di spingere il mio repository privato.
johnsampson,

2
Apparentemente il webinar Docker è obsoleto.
Luís de Sousa,

Avvertenza con sudo - vedi la mia risposta
rhoerbe,

80

Ho avuto lo stesso problema, ma la risposta accettata qui fornita non ha funzionato per me. Ho provato alcuni passaggi e sono riuscito a spostarmi per spingerlo finalmente. Spero che questo aiuti qualcuno.

Ecco i passaggi eseguiti per me:

1) Accedi alla finestra mobile.

docker login -u sirimalla

2) Contrassegna la build dell'immagine

il mio nome immagine qui è: mylocalimage e per impostazione predefinita ha tag: latest
e il mio nome utente è: sirimalla come registrato con la finestra mobile, e ho creato un repository pubblico chiamato: dockerhub

così il mio repository personale diventa ora: sirimalla / dockerhub e voglio spingere la mia immagine con il tag:myfirstimagepush

Ho taggato come di seguito:

docker tag mylocalimage:latest sirimalla/dockerhub:myfirstimagepush

3) Ho spinto l'immagine nel mio repository docker personale come di seguito

docker push sirimalla/dockerhub:myfirstimagepush

E ha spinto con successo al mio repository docker personale.


2
Questa risposta ha risolto il mio problema. Questa dovrebbe essere la risposta accettata. L'altra risposta non è completa e non ha funzionato per me. Ad esempio, l'altra risposta non fa menzione di docker login. Fino a quando non sono arrivato a questo thread, non lo sapevo docker login.
rm.rf.etc,

in generale dovresti usare il prefisso sudo per tutti i tuoi comandi ref projectatomic.io/blog/2015/08/…
wmitchell

Avvertenza con sudo: vedi la mia risposta
rhoerbe,

1
Questo era il cucciolo.
Dave Hodgkinson

1
Sì, questa risposta ha risolto solo il mio problema. Si prega di fare riferimento a questo chiunque voglia risolvere questo problema.
Maha Lak,

42

È anche importante notare che quando tagghi la tua immagine, la tagghi usando lo spazio dei nomi e poi il tuo repository / mydevrepo . Questo mi ha confuso quando seguivo i documenti Docker. Successivamente ho usato:

docker login

E poi ho spinto la mia immagine usando il 'nome taggato' .

docker push {namespace}/mydevrepo

39

Usa i comandi seguenti:

$ 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

ad es. ho un repository pubblico come manjeet86 / docker-repo quindi i comandi sarebbero:

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

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

Basta vedere :invece /che era il trucco. Per me funziona. Non so se ti consente di taggare con /al posto di :ma che potrebbe essere per qualche altro scopo.

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


1
Questo è ciò che ha funzionato per me, usando :invece di /, grazie.
Kris,

Possibile spiegazione del problema in questa discussione: github.com/moby/moby/issues/31760#issuecomment-309812486
gp.

Grazie. Dovrebbe essere la risposta accettata imho :)
Nk54

10

Il modo in cui la finestra mobile gestisce ID utente e repository può essere un po 'confuso. Supponiamo che tu crei un account utente xyz sull'hub docker. Il nuovo account stabilisce automaticamente uno spazio dei nomi xyz. Quindi si crea un repository chiamato myrepo. Il nome del repository sarà effettivamente xyz/myrepo.

Per spingere un'immagine dovresti fare:

docker push docker.io/xyz/myrepo

È possibile aggiungere ": latest" o un tag diverso, se necessario.

Se viene visualizzato il requested access to the resource is deniedmessaggio di errore:

  1. Vai a https://hub.docker.com/ e accedi come xyz.
  2. Fai clic sul tuo repository xyz / myrepo.
  3. Fai clic su Collaboratori.
  4. Aggiungi xyz come collaboratore.

quindi ciò significa che non possiamo inviare immagini da un repository pubblico di terze parti?
sdinesh94,

Non ha funzionato per me :(
Nom1fan

10

Non sono sicuro di cosa sia successo all'hub docker, ma nessuna delle soluzioni pubblicate ha funzionato per me. Ecco la soluzione che ha funzionato per me a partire da gennaio 2018:

  1. Vai su hub.docker.com e cambia il tuo repository in privato
  2. Nella tua shell fai:

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. Torna all'hub docker e modifica il repository in pubblico. Questo ha funzionato per me.

8

Docker ha anche un limite al numero di repository privati ​​che puoi avere. Se stai creando un repository privato spingendo dal tuo computer locale, questo creerà il repository ma non sarà più possibile spingerlo o estrarlo da esso e otterrai l'errore "accesso negato alla risorsa".


come spingere sempre come repository pubblico?
Raja Anbazhagan,

7

Sistema operativo: Ubuntu16.04

Motivo: ho eliminato il file di configurazione del client ( ~ / .docker / config.json )

Soluzione:

  • Riavvia la finestra mobile.
    riavvio della finestra mobile di servizio .
  • Deve inserire le informazioni di accesso, quindi genera automaticamente il file di configurazione.
    login docker --username = nomeutentehockerhuemail --email=tuaemail@azienda.com

1
Questa è stata l'unica soluzione che ha funzionato per me. Avevo aggiornato il mio Docker e poi, per qualche motivo, mvn dockerfile: push fallito con questa eccezione. L'eliminazione di questo config.json l'ha risolto.
1

Questo mi ha anche aiutato. Mi sono reso conto che per accedere o non avrei dovuto inserire l'URL o se dovessi specificare l'URL dell'hub docker login https://index.docker.io/v1/ -u=yourusername
docker che

7

Il mio problema stava usando semplicemente caratteri non validi (un extra /) nel mio nome di immagine:

myusername/something/image

è un nome immagine non valido. Prova myusername / qualcosa-immagine. Spero che questo aiuti qualcuno.


Un messaggio di errore così terribile e non specifico! Stavo facendo la stessa cosa. Inoltre, non consentirà la ripetizione di caratteri speciali , ad es __.
ijoseph

Funziona per me, grazie!
Kenny Lee,

6

Ho avuto lo stesso problema oggi. L'unica cosa che ha funzionato per me è stato il login esplicito a "docker.io" :

docker login docker.io

Ho provato vari altri nomi e il login sembra funzionare, ma in seguito si tradurrebbe nel seguente errore.

l'accesso negato alla risorsa è stato negato


2
Questo è anche ciò che ha risolto il problema per me. Ho provato docker loginsenza successo, ma l'esplicito docker.ioalla fine ha fatto il trucco.
Jooks

Questo è stato per me
Glitcher

l'accesso esplicito a docker.io non ha funzionato per me. Il login ha funzionato in passato, ha smesso di funzionare ora.
Rhoerbe,

5

Anch'io avevo questo problema, ho testato le soluzioni qui presenti ma inutilmente, sono stato correttamente effettuato l'accesso, almeno in base all'output di docker loginma ancora non sono riuscito a spingere l'immagine. Quello che alla fine ha funzionato è stato semplicemente fare:

docker logout

E poi di docker loginnuovo, è stato così banale. Non sono sicuro di cosa sia successo ma forzare il re-login ha funzionato.


1
Mi ha aiutato anche io!
Levente Orbán,

1
Sì con il logout, torna a lavorare per me. Grazie!
Nam G VU

4

Se si riscontra questo problema durante l'uso del Registro contenitori di Azure, è possibile risolverlo accedendo prima al registro.

docker login yourregistry.azurecr.io

E quindi tagga la tua immagine in modo che corrisponda al nome host del tuo registro.

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

E poi finalmente spingerlo.

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

1
Venendo da Azure questo è ciò che ha aiutato! Non è lo spazio dei nomi ma il nome host del registro che è la prima parte del tag!
binaryguy,

4

A coloro che provano a inviare l'immagine al proprio gestore di repository Nexus, fai quanto segue:

1) Accedi al tuo Nexus Repository Manager (la porta 8443 è associata a un repository host Docker specifico)

sudo docker login xxx.mydomain.com:8443

2) Contrassegna l'immagine CON IL TUO SERVER NEXUS IP / DNS

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

3) Spingere l'immagine

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

Ho avuto un problema nel plugin docker jenkins facendo sempre riferimento a docker.io. Tagging like xxx.mydomain.com:8443/myimage:1.0.0 ha risolto il problema. Assicurati di omettere procotol e / v2 / stuff.
Himmet Avsar

perché aggiungere la porta. E di chi aggiungere la porta vicino a xxx.mydomain.com. 8443 è per avvio a molla https. E se fosse un'applicazione angolare
P Satish Patro

1
@PSatishPatro Quando il tuo repository si risolve in una specifica porta http / https, il tag dovrà sapere dove spingerlo (dato che in realtà non gli dici dove andare - come parametro), come detto sopra, deve essere il URL esatto come repository di Nexus completo.
Phil

3

Accedi dall'app. Ho provato solo dal terminale senza fortuna.

Questa è la versione 17.06.1

inserisci qui la descrizione dell'immagine


Su MacOS questa è stata la soluzione per me.
Vagari,

3

Soluzione di lavoro semplice:

Vai qui https://hub.docker.com/per creare un repository PRIVATO con il nome, ad esempio johnsmith/private-repositoryquesto è quello NAME/REPOSITORYche utilizzerai per la tua immagine durante la creazione dell'immagine.

  • Primo, docker login

  • In secondo luogo, utilizzo " docker build -t johnsmith/private-repository:01 ." per creare un'immagine e utilizzo " docker images" per confermare l'immagine creata, ad esempio in questa casella gialla di seguito: (mi dispiace, non posso incollare il formato della tabella ma solo la stringa di testo)

johnsmith / private-repository (REPOSITORY) 01 (TAD) c5f4a2861d6e (ID IMMAGINE) 2 giorni fa (CREATO) 305MB (DIMENSIONE)

  • Terzo, io uso docker push johnsmith/private-repository:01

Fatto!


2

La mia risposta è correlata a problemi simili di DevOps di Azure che ho avuto con la seguente pipeline comune (è più specifica ma potrebbe aiutare qualcuno a risparmiare tempo):

  1. Ottieni fonti da Github
  2. Crea un'immagine docker
  3. Sposta l'immagine docker su dockerhub

L'errore che ho ricevuto al push denied: requested access to the resource is deniedmi ha inviato qui.

Prestare attenzione alla variabile $(Build.Repository.Name)inclusa nel nome dell'immagine. È di default il nome del repository da github, ma per far funzionare la tua spinta dovrebbe essere dockerhub_account_username/your_dockerhub_repository_name.

Sostituisci $(Build.Repository.Name)con dockerhub_account_username/your_dockerhub_repository_namenel campo del nome dell'immagine sia i passaggi di creazione che quelli di push.

Questo è necessario per il dockerhub api per sapere dove spingere l'immagine.


2

Ha funzionato dopo ho cambiato la " finestra mobile login https://hub.docker.com " a " finestra mobile login docker.io " e fornito nome utente e password.

Quindi seguire i comandi seguenti:

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

docker push new-repo:tagname

NOTA: "new-repo" conterrà "ID Docker + nome repository"

Qui ho creato il repository "Ubuntu" nell'hub Docker prima di eseguire il comando di seguito.

Esempio:

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

docker push aloktiwari2007/ubuntu:latest

il punto importante per me era tagname nel comando tag docker che dovrebbe seguire - <dockeruserid> / <nome repository remoto>: <tag>. Lo stesso identificatore di tag deve essere utilizzato nel comando push.
Tanmay Patil,

1

Se dopo non funziona ancora docker login, assicurati innanzitutto che il repository a cui stai tentando di eseguire il push sia stato creato.


1

Ho anche questo problema. Risulta che sto usando il livello gratuito e sto provando a inviare più di 1 immagine nel repository privato. Rendere privata 1 immagine e il resto pubblico ha funzionato per me.


1

Nel mio caso, stavo spingendo verso un'organizzazione in cui faccio parte di un team che dispone delle autorizzazioni di amministratore per il repository.

quindi il mio comando push era: docker push org-name/image-name

Potrei spingere con successo a nome utente / nome-immagine ma non all'organizzazione. Ho controllato tre volte le autorizzazioni. Niente ha funzionato.

La soluzione era eliminare il repository dall'hub docker e riprovare a utilizzare nuovamente: docker push org-name/image-name

Per quanto valga la pena, penso che il repository sia stato originariamente trasferito prima che l'account fosse convertito in un'organizzazione.


1

Quindi, nel caso sia utile a chiunque ...
Ho avuto lo stesso problema ed ecco qual era il mio problema e il FIX.

  • Avevo un computer sulla mia rete di test chiamato "galaxy".
  • Ho installato il registro docker usando il seguente comando run:

    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
    

    Quindi stavo cercando di inviare un'immagine alla galassia da un laptop in rete, quindi ho fatto questo:

    docker login galaxy
    

    Questo mi darebbe un errore che direbbe:

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

    Stranamente la soluzione a questo problema è stata quella di fare un login come questo:

    docker login galaxy:443
    

    Ciò ha comportato un accesso riuscito.

    Quindi ho provato a spingere l'immagine dal mio laptop alla "galassia".
    Avevo già creato un tag per la mia immagine simile al seguente:

    galaxy/myImage:0.0.1
    

    Quindi ho provato a spingerlo facendo questo:

    docker push galaxy/myImage:0.0.1
    

    A cui ho ricevuto la risposta:

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

    Stranamente ho scoperto che la soluzione per questo era di contrassegnare prima l'immagine come segue:

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

    ... e poi fai la spinta in questo modo:

    docker push galaxy:443/myImage:0.0.1
    

    Quindi, per qualche motivo, ho dovuto includere la porta nel tag come parte richiesta del nome del repository.



    Spero che questo aiuti gli altri.


  • 1

    tutte le risposte precedenti erano corrette, voglio solo aggiungere un'informazione che ho visto non menzionata;

    Se il progetto è un progetto privato per inviare correttamente l'immagine, è necessario configurare un token di accesso personale o distribuire un token con la chiave read_registry abilitata.

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

    spero che questo sia utile (anche se la domanda è stata pubblicata finora nel tempo)


    1

    Questa risposta è tanto per il mio io futuro quanto per chiunque altro. Ho riscontrato questo esatto problema quando ho effettuato l'accesso correttamente, ma sto tentando di inviare a un repository privato quando il mio numero di repository privati ​​è maggiore o uguale al limite consentito dal mio piano.

    Non sono esattamente sicuro di come sono stato in grado di creare troppi repository privati, ma se il mio piano include 5 repository privati ​​e in qualche modo ne ho 6, questo è l'errore che riceverò:

    denied: requested access to the resource is denied

    Nel mio caso è possibile che ho finito con troppi repository privati ​​perché la mia visibilità predefinita è impostata su privato:

    Visibilità predefinita

    Qui puoi determinare quanti repository privati ​​puoi avere:

    Piani di fatturazione

    Dopo aver reso pubblico il repository problematico, il problema è diventato evidente:

    Rendi il repository privato 5 di 5


    1

    Spero davvero che questo aiuti qualcuno (che guarda prima alle risposte finali come me stesso):

    Ho continuamente cercato di digitare

    docker push user/repo/tag
    

    Anziché

    docker push user/repo:tag
    

    Da quando ho anche creato il mio tag in questo modo:

    docker tag image user/repo/tag
    

    ... tutto l'inferno ha perso.

    Spero sinceramente che tu non ripeta il mio errore. Ho sprecato 30 minuti in questo ...


    1

    Sono lento ad aggiungere ancora un'altra risposta, ma la risposta accettata e quelle rimanenti che menzionano docker loginmancano di un caso limite per risolvere i problemi che altri affermano nei commenti.

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

    L'enfasi sulla portnecessità di essere inseriti è probabilmente la soluzione per coloro che stanno ancora cercando. docker loginodocker login <private-repo-host> può connettersi senza problemi, ma quando arriva il momento di spingere le immagini, otterrai lo stesso errore di OP.

    Cioè, puoi connetterti senza definire host o porta e ottenere comunque:

    ...

    Accesso riuscito

    Nel mio caso, sto usando un registro docker incorporato in GitLab, che è stato configurato per usare la porta 4567. Può essere avventuroso verificare da quale porta è necessario accedere al registro. Senza specificare che la porta docker login <our.gitlab.host>accederà correttamente, ma darebbe lo stesso problema che l'OP ha chiesto:

    ...

    Il push si riferisce al repository [...]

    negato: accesso vietato

    Se stai usando docker.io/dockerhub probabilmente non avrai questo problema, ma se hai una soluzione di registro self-hosted / privata la probabilità aumenta devi accedere esplicitamente usando sia l'host che la porta per il registro docker .


    Grazie, molto utile!
    Alfabravo,

    1

    Non consentire fuorvianti verso il nome del tag.
    Il mio approccio per risolvere questo:

    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 
    

    Produzione:

    negato: l'accesso richiesto alla risorsa è negato


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

    Produzione:

    trys: digest: sha256: 405b6f0ae25772ef71b8f59fd6a56ff9b426f50bd24bac2b5db41f65efd3387c dimensione: 1365

    L'ingannevole è Tag, assicurati di capirlo.


    1

    il modo più semplice viene utilizzato docker desktop (per Windows 10 o versioni successive e mac)

    prima iscrizione all'hub docker fornendo dockerID

    quindi fare clic sull'icona del desktop docker nella macchina e -> Preferenze -> quindi accedere ad esso utilizzando docker / ID docker / password e password.

    inserisci qui la descrizione dell'immagine


    0

    rinomina la tua immagine come nome utente / nome-immagine docker tag nome-tuo-immagine-corrente / immagine-corrente dockerhub-nomeutente / nome-alcuni: il tuo-tag (esempio: ultimo)


    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.