docker non autorizzato: autenticazione richiesta - su push con login riuscito


101

Durante il push dell'immagine docker (dopo il login riuscito) dal mio host ricevo "non autorizzato: autenticazione richiesta".

Dettagli di seguito.

-bash-4.2# docker login --username=asamba --email=anand.sambamoorthy@gmail.com
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
  • Versione Docker: 1.9.1 (sia client che server)
  • http://hub.docker.com ha creato anche il repository (asamba / docker-whale).

/ Var / log / messages mostra 403, non so se questa finestra mobile. Vedi sotto.

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

Qualsiasi aiuto è apprezzato, fammi sapere se hai bisogno di ulteriori informazioni. Ho fatto il push anche con -f. Senza fortuna!


1
Sarebbe utile per l'amministratore del sito e per altri che cercano informazioni sullo stesso problema se facessi clic sul segno di spunta accanto alla tua risposta per contrassegnarlo come "la" risposta :-) Sei autorizzato (anche incoraggiato) a farlo su Stack Overflow.
Cindy Meister

Risposte:


88

Modifica (13/08/2017)

Sulla base del commento di @ KaraPirinc, nella versione 17 della finestra mobile per accedere (Passaggio 1),

docker login -u username -p password

Ho anche avuto lo stesso problema, ecco come lo risolvo.

Passaggio 1: accedi a Docker Hub

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

Passaggio 2: creare un repository nel docker hub . diciamo " mysqlserver: sql ".

docker push <user username>/mysqlserver:sql

7
Questa dovrebbe essere la risposta corretta . docker loginfunziona anche senza i parametri
blnc

5
Funziona perfettamente. Tuttavia, --email è stato deprecato .
IgorGanapolsky

(docker versione 17): docker login -u nome utente -p password
Yusuf Ismail Oktay

grazie per l'aggiornamento. Aggiornerò la risposta in base al tuo commento.
GPrathap

34

La soluzione che hai postato non funziona per me ...

Questo è ciò che funziona per me:

  1. Crea il repository con il nome desiderato.

  2. Quando si salva l'immagine, assegna un nome all'immagine come repository, incluso il nome utente <dockerusername>/desired-name. Ad esempio radu/desired-name,.


# docker ps -a ottieni il nome di conainer --nostalgic_morse qui # docker commit -m "test" -a "alex" nostalgic_morse alexcpn / grpc # docker push alexcpn / grpc
Alex Punnen

28

OK! non importa; Ho trovato la soluzione. con 403 Sospettato che HTTP non stia andando all'URL corretto.

Modificare il file in cui sono memorizzate le credenziali di accesso ~/.docker/config.jsondal predefinito generato di

{
        "auths": {
                "docker.io": {
                        "auth": "XXXXXXXXXXXXX",
                        "email": "x.y@gmail.com"
                }
        }
}

a - Notare il cambiamento da docker.io -> index.docker.io/v1. Questo è il cambiamento.

{
        "auths": {
                "https://index.docker.io/v1/": {
                        "auth": "XXXXXXXXXXXXX",
                        "email": "x.y@gmail.com"
                }
        }
}

Spero che aiuti.

Tieni presente che il campo di autenticazione deve essere "nomeutente: password" codificato in base64. Ad esempio: "nomeutente: password" codificato in base64 è "dXNlcm5hbWU6cGFzc3dvcmQ ="

quindi il tuo file conterrà:

"auth": "dXNlcm5hbWU6cGFzc3dvcmQ="

Mi hai risparmiato un bel po 'di tempo! Soluzione perfetta anche per me.
Marco Lenzo

7
Ha funzionato anche per me. Ecco la stessa cosa dalla riga di comando:sudo docker login -e me@example.com -u someuser -p somepass https://index.docker.io/v1/
Banjer

2
Grazie @Banjer, il parametro -e è deprecato e sudo non dovrebbe essere utilizzato per la maggior parte di coloro che hanno configurato correttamente il proprio sistema. Una soluzione migliore sarebbe: docker login -u someuser https://index.docker.io/v1/questo chiederà la password, impedendole di finire nella cronologia dei comandi.
erb

18

se stai usando heroku, assicurati di non aver dimenticato di "heroku container: login" prima di premere.


7

Stavo riscontrando un problema simile con un messaggio di errore altrettanto inutile, ma si è scoperto che stavo cercando di eseguire il push di un'immagine che avevo costruito su un'istanza gestita da una macchina mobile.

Quando ho effettuato l'accesso all'istanza stessa, l'ho fatto docker logine docker pushtutto ha funzionato bene.


grazie, il login docker crea automaticamente il file di configurazione come descritto al link
Felix

7

Ho avuto lo stesso problema ma l'ho risolto con push con l'URL specificato. come: docker login -u https://index.docker.io/v1/

output della 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

5

Sebbene il processo standard sia quello di accedere e quindi inviare al registro docker, il trucco per superare questo particolare problema è accedere fornendo nome utente e password nella stessa riga.

Così :

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

Lavori

mentre

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

docker push sampledockerregistry.com/myapp

Non riesce


4

Anche io ho effettuato il login e controllato tutta la configurazione, ancora non funziona !!!

Si è scoperto che quando costruisco il mio docker, dimentico di inserire il mio nome utente prima del nome del repository

docker build docker-meteor-build 

(costruire con successo)

E poi, quando sono passato al mio repository, ho usato

docker push myname/docker-meteor-build 

Mostrerà il file unauthorized authentication required

Quindi, la soluzione è quindi il nome della build e il push dovrebbe essere esattamente lo stesso

docker build myname/docker-meteor-build 
docker push myname/docker-meteor-build 

4

Il problema che devono affrontare i neofiti è che tendiamo a trattare il repository hub docker proprio come un repository esperto e pensiamo che possa contenere molti file, cartelle e altri contenuti diversi.

Un repository docker d'altra parte è solo una singola immagine, non contiene nient'altro. Può contenere diverse versioni della stessa immagine, ma conterrà solo un'immagine.

Quindi, assegna al tuo repository sull'hub docker lo stesso nome dell'immagine che desideri inserire e usa il tuo nome utente dockerhub come prefisso. Ad esempio, se il tuo nome utente è myusername e il nome della tua immagine è docker-whale , assicurati di nominare il tuo repository dockerhub come docker -whale e usa i comandi seguenti per taggare e inviare la tua immagine al repository:

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'

1
Continuavo a ricevere "negato: l'accesso richiesto alla risorsa è stato negato" finché non ho visto questo post. Finalmente sono riuscito a far funzionare il mio primo "docker-push" senza essere tenuto in mano da un tutorial. Grazie mille!
glendon

2

Se stai inviando una nuova immagine privata per la prima volta, assicurati che il tuo abbonamento supporti questa immagine aggiuntiva.

Docker ti consente di avere 6 immagini private nominate, anche se paghi solo per 5, ma non per spingere quella sesta immagine. La mancanza di un messaggio informativo è fonte di confusione e irritazione.


2

Ecco la soluzione per il mio caso (pronti contro termine privati, piano di account gratuito)

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

Il nome della build dell'immagine da inviare deve avere lo stesso nome dei repository.

Esempio: i repository su docker hub sono: accountName / resposName nome build immagine "accountName / resposName" -> docker build -t accountName / resposName

quindi digitare docker push accountName / resposName: latest

È tutto.


Il collegamento è ora interrotto. Per favore aggiustalo.
Eric Bolinger

1

Quello che ha funzionato per me è stato creare un nuovo repository e rinominare l'immagine con

$ docker tag image_id myname/server:latest


1

Assicurati di avere più slot per immagini private.

Nel mio caso ho convertito un utente in un'organizzazione e ha perso un'immagine privata gratuita, quindi i push precedenti che funzionavano, non funzionavano più.


1

Il mio problema era un token di autorizzazione non valido dopo 5 minuti. La spinta ha richiesto più di 5 minuti a causa delle dimensioni dell'immagine.

L'ho risolto aumentando la "Durata del token di autorizzazione" a 10 minuti.

inserisci qui la descrizione dell'immagine


Dove hai trovato questa ambientazione? Non sono riuscito a trovarlo.
Vic Seedoubleyew

2
Il mio trucco per evitare questo problema è stato quello di eseguire docker loginin un'altra finestra di terminale poco prima del termine del caricamento
Vic Seedoubleyew

@VicSeedoubleyew Admin Area -> Settings -> CI/CD -> Container Registry. sentiero URL: /admin/application_settings/ci_cd.
Manuel Schmitzberger

Grazie per la risposta. Area amministrativa di cosa? Non vedo niente di tutto ciò su dockerhub
Vic Seedoubleyew

Questo è per una propria istanza gitlab. Non sono sicuro che tu possa configurarlo su dockerhub.
Manuel Schmitzberger

0

Assicurati che il nome del repository della finestra mobile corrisponda al nome del repo della finestra mobile locale. ad esempio, diciamo se il nome del repository locale "kavashgar / nodjsapp"

allora dovresti anche avere un repo denominato "kavashgar" nel docker hub


0

nel file di configurazione ~ / .docker / config.json aggiungi

{
        "auths": {
             "https://index.docker.io/v1/": {
                        "auth": "XXXXXXXXXXXXX",
                        "email": "my_email@gmail.com"
                }
        }
}

dove XXXXX è la codifica base64 del tuo nome utente: password (il: è incluso) di https://hub.docker.com

nel mio caso ho avuto lo stesso errore con un pull. il problema (sotto Windows) è stato provocato dal processo in esecuzione di double docker, quindi uccidili tutti e riavvia un servizio e funziona.


0

Ci sono già state buone risposte, ma vorrei menzionarne una: NON è necessario creare un repository in anticipo prima di spingerlo.

Il problema per me era che non avevo impostato il nome utente corretto dell'account a cui ho effettuato l'accesso. Ma una volta che il nome utente corretto è stato impostato prima dell'immagine (ad esempio YOURNAME/YOURIMAGE) tramite il suo tag, è possibile eseguirne il push senza creare in anticipo un nuovo repository.

sudo docker tag IMAGE:VERSION USERNAME/IMAGE:VERSION
sudo docker push USERNAME/IMAGE:VERSION

0

Stesso problema qui, durante il push dell'immagine:

unauthorized: authentication required

Cosa ho fatto:

docker login --username=yourhubusername --email=youremail@company.com

Che ha stampato:

--email è deprecato (ma l'accesso è riuscito ancora)

Soluzione: utilizza la sintassi di accesso più recente.

docker login

Chiederà sia il nome utente che la password interattivo. Quindi la spinta dell'immagine funziona.

Anche dopo aver utilizzato la nuova sintassi, il mio ~/.docker/config.jsonaspetto dopo l'accesso:

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

Quindi la credenziale è nel portachiavi di macOS.


0

Ho ricevuto un errore simile per sudo docker push / sudo docker pull sul repository ecr.Questo perché aws cli installato nel mio utente (abc) e docker installato nell'utente root Ho provato a eseguire sudo docker push sul mio utente (abc)

Risolto questo problema installando aws cli in root, configurato aws usando aws configure in root ed eseguendo sudo docker push to ecr su utente root



0

Puoi mv il file xxx / .docker / config.json da qualche parte per gestirlo. Quindi prova ad accedere di nuovo per creare un nuovo file 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

0

Se corri windows 7 docker Registry

  1. Avvia **Docker Quick Start terminal**esecuzione (questo terminale abilita la connessione) Fino a quando non hai spinto le immagini, questo manterrà attivo il token.
  2. Accesso docker login
  3. Assicurati di taggare l'immagine con il nome utente

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

  4. spingere l'immagine

    docker image push username/imagename

Nota : il nome dell'immagine è tutto minuscolo


0

Ho avuto un problema simile.

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

Ho scoperto che anche se accedo con successo con il docker logincomando, qualsiasi pull non è riuscito. Ho provato a ripulire il file~/.docker/config.json ma niente è migliorato.

Guardando nel file di configurazione ho visto che le credenziali non sono state salvate lì ma in un file "credsStore": "secretservice". In Linux questo è lo strumento seahorseo Passwords and Keys. Ho controllato lì e ho ripulito tutti i login dell'hub docker. Dopo questo, un nuovo accesso alla finestra mobile ha funzionato come previsto.

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.