Docker nicht autorisiert: Authentifizierung erforderlich - bei Push mit erfolgreicher Anmeldung


99

Beim Pushing des Docker-Images (nach erfolgreicher Anmeldung) von meinem Host wird "nicht autorisiert: Authentifizierung erforderlich" angezeigt.

Details unten.

-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
  • Docker-Version: 1.9.1 (sowohl Client als auch Server)
  • http://hub.docker.com hat auch das Repo erstellt (asamba / docker-whale).

Die / var / log / messages zeigt 403, ich weiß nicht, ob dieser Docker. Siehe unten.

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

Jede Hilfe wird geschätzt, bitte lassen Sie mich wissen, wenn Sie weitere Informationen benötigen. Ich habe den Push auch mit -f gemacht. Kein Glück!


1
Es wäre sowohl für den Site-Administrator als auch für andere hilfreich, nach Informationen zu demselben Problem zu suchen, wenn Sie auf das Häkchen neben Ihrer Antwort klicken, um sie als "die" Antwort zu markieren :-) Sie dürfen (sogar ermutigt), dies zu tun bei Stapelüberlauf.
Cindy Meister

Antworten:


87

Bearbeiten (13/08/2017)

Basierend auf dem Kommentar von @ KaraPirinc in Docker-Version 17, um sich anzumelden (Schritt 1),

docker login -u username -p password

Ich hatte auch das gleiche Problem. So löse ich es.

Schritt 1: Melden Sie sich beim Docker Hub an

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

Schritt 2: Erstellen Sie ein Repository im Docker-Hub . Sagen wir " mysqlserver: sql ".

docker push <user username>/mysqlserver:sql

7
Dies sollte die richtige Antwort sein . docker loginfunktioniert auch ohne die params
blnc

5
Funktioniert perfekt. Allerdings --email ist veraltet .
IgorGanapolsky

(Docker Version 17): Docker Login -u Benutzername -p Passwort
Yusuf Ismail Oktay

Danke für das Update. Ich werde die Antwort basierend auf Ihrem Kommentar aktualisieren.
GPrathap

34

Die von Ihnen veröffentlichte Lösung funktioniert bei mir nicht ...

Das funktioniert bei mir:

  1. Erstellen Sie das Repository mit dem gewünschten Namen.

  2. Benennen Sie das Bild beim Festschreiben des Bildes wie das Repository, einschließlich des Benutzernamens <dockerusername>/desired-name. Zum Beispiel radu/desired-name.


# docker ps -a bekommt hier den Namen des Conainers --nostalgic_morse # docker commit -m "test" -a "alex" nostalgic_morse alexcpn / grpc # docker push alexcpn / grpc
Alex Punnen

28

OK! keine Ursache; Ich habe die Lösung gefunden. mit 403 Verdacht, dass das HTTP nicht zur richtigen URL geht.

Ändern Sie die Datei , die die Anmeldeinformationen gespeichert das hat ~/.docker/config.jsonaus dem Standard erzeugt von

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

to - Beachten Sie die Änderung von docker.io -> index.docker.io/v1. Das ist die Veränderung.

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

Hoffentlich hilft das.

Beachten Sie, dass das Auth-Feld "Benutzername: Passwort" base64-codiert sein sollte. Beispiel: "Benutzername: Passwort" base64-codiert ist "dXNlcm5hbWU6cGFzc3dvcmQ =".

Ihre Datei würde also Folgendes enthalten:

"auth": "dXNlcm5hbWU6cGFzc3dvcmQ="

Du hast mir ziemlich viel Zeit gespart! Perfekte Lösung auch für mich.
Marco Lenzo

7
Hat auch für mich gearbeitet. Hier ist das gleiche von der Kommandozeile:sudo docker login -e me@example.com -u someuser -p somepass https://index.docker.io/v1/
Banjer

2
Dank @Banjer ist der Parameter -e jedoch veraltet, und sudo sollte nicht für die meisten verwendet werden müssen, die ihr System ordnungsgemäß eingerichtet haben. Eine bessere Lösung wäre: docker login -u someuser https://index.docker.io/v1/Dadurch wird nach dem Kennwort gefragt, wodurch verhindert wird, dass es im Befehlsverlauf landet.
Erb

16

Wenn Sie Heroku verwenden, stellen Sie sicher, dass Sie nicht vergessen haben, "Heroku Container: Login", bevor Sie drücken.


7

Ich hatte ein ähnliches Problem mit einer ähnlich wenig hilfreichen Fehlermeldung, aber es stellte sich heraus, dass ich versuchte, ein Image, das ich erstellt hatte, gegen eine von Docker-Maschinen verwaltete Instanz zu pushen.

Als ich mich bei der Instanz selbst anmeldete, tat es docker loginund docker pushalles funktionierte gut.


danke, das Docker-Login erstellt automatisch die Konfigurationsdatei wie unter Link beschrieben
Felix

7

Ich hatte das gleiche Problem, aber ich habe es mit Push mit der angegebenen URL behoben. als: Docker Login -u https://index.docker.io/v1/

Konsolenausgabe:

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

Obwohl der Standardprozess darin besteht, sich anzumelden und dann zur Docker-Registrierung zu wechseln, besteht der Trick, um dieses spezielle Problem zu überwinden, darin, sich anzumelden, indem Benutzername und Passwort in derselben Zeile angegeben werden.

So :

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

Funktioniert

wohingegen

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

docker push sampledockerregistry.com/myapp

Schlägt fehl


4

Auch wenn ich mich angemeldet und die gesamte Konfiguration überprüft habe, funktioniert es immer noch nicht !!!

Es stellte sich heraus, dass ich beim Erstellen meines Dockers vergesse, meinen Benutzernamen vor den Repo-Namen zu setzen

docker build docker-meteor-build 

(erfolgreich bauen)

Und dann, als ich in mein Repository verschoben habe, habe ich verwendet

docker push myname/docker-meteor-build 

Es wird das zeigen unauthorized authentication required

Die Lösung ist also der Name des Builds und der Push sollte genau der gleiche sein

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

4

Das Problem für Neulinge ist, dass wir das Docker-Hub-Repository in der Regel wie ein Maven-Repository behandeln und glauben, dass es viele verschiedene Dateien, Ordner und andere Inhalte enthalten könnte.

Ein Docker-Repository ist dagegen nur ein einzelnes Image, es enthält nichts anderes. Es kann verschiedene Versionen desselben Bildes enthalten, aber es wird nur ein Bild enthalten.

Benennen Sie Ihr Repository auf dem Docker-Hub also mit demselben Namen wie das Image, in das Sie es verschieben möchten, und verwenden Sie Ihren Dockerhub-Benutzernamen als Präfix. Wenn Ihr Benutzername beispielsweise myusername und Ihr Bildname Docker-Wal ist , stellen Sie sicher, dass Sie Ihr Dockerhub-Repository als Docker-Wal benennen, und verwenden Sie die folgenden Befehle, um Ihr Bild zu markieren und in das Repository zu verschieben:

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
Ich wurde immer wieder "verweigert: angeforderter Zugriff auf die Ressource wird verweigert", bis ich diesen Beitrag sah. Schließlich gelang es mir, meinen ersten "Docker-Push" zum Laufen zu bringen, ohne von einem Tutorial in der Hand gehalten zu werden. Vielen Dank!
Glendon

2

Wenn Sie zum ersten Mal ein neues privates Image übertragen, stellen Sie sicher, dass Ihr Abonnement dieses zusätzliche Image unterstützt.

Mit Docker können Sie 6 private Bilder benennen lassen, auch wenn Sie nur für 5 bezahlen, aber das 6. Bild nicht pushen. Das Fehlen einer informativen Nachricht ist verwirrend und irritierend.


2

Hier die Lösung für meinen Fall (private Repos, kostenloser Account Plan)

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

Der zu pushende Image-Build-Name muss den gleichen Namen wie die Repos haben.

Beispiel: Repos auf dem Docker-Hub sind: accountName / resposName Image-Build-Name "accountName / resposName" -> Docker-Build -t accountName / resposName

Geben Sie dann docker push accountName / resposName: latest ein

Das ist alles.


Link ist jetzt unterbrochen. Bitte repariere es.
Eric Bolinger

1

Für mich hat es funktioniert, ein neues Repository zu erstellen und das Image mit umzubenennen

$ docker tag image_id myname/server:latest


1

Stellen Sie sicher, dass Sie mehr Steckplätze für private Bilder haben.

In meinem Fall habe ich einen Benutzer in eine Organisation konvertiert und es ist ein freies privates Image verloren gegangen, sodass frühere Pushs, die funktionierten, nicht mehr funktionierten.


1

Mein Problem war ein ungültiges Autorisierungstoken nach 5 Minuten. Der Push dauerte aufgrund der Bildgröße mehr als 5 Minuten.

Ich habe es behoben, indem ich die "Dauer des Autorisierungstokens" auf 10 Minuten erhöht habe.

Geben Sie hier die Bildbeschreibung ein


Wo haben Sie diese Einstellung gefunden? Ich konnte es nicht finden.
Vic Seedoubleyew

2
Mein Hack, um dieses Problem zu vermeiden, bestand darin, docker loginkurz vor dem Ende des Uploads in einem anderen Terminalfenster zu laufen
Vic Seedoubleyew,

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

Danke für die Antwort. Admin-Bereich von was? Ich sehe nichts davon auf Dockerhub
Vic Seedoubleyew

Das ist für eine eigene Gitlab-Instanz. Ich bin nicht sicher, ob Sie das auf Dockerhub konfigurieren können.
Manuel Schmitzberger

0

Stellen Sie sicher, dass Ihr Docker-Repositry-Name mit Ihrem lokalen Docker-Repo-Namen übereinstimmt. Nehmen wir zum Beispiel an, Sie haben den lokalen Repo-Namen "kavashgar / nodjsapp".

dann solltest du auch ein repo namens "kavashgar" im docker hub haben


0

in Ihrer Konfigurationsdatei ~ / .docker / config.json hinzufügen

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

Dabei ist XXXXX die Base64-Codierung Ihres Benutzernamens: Passwort (das: ist enthalten) von https://hub.docker.com

In meinem Fall hatte ich den gleichen Fehler mit einem Zug. Das Problem (unter Windows) wurde durch einen Double Docker-Ausführungsprozess hervorgerufen. Beenden Sie also alle und starten Sie einen Dienst neu, und es funktioniert.


0

Es gab bereits gute Antworten, aber ich möchte eine erwähnen - Sie müssen KEIN Repository im Voraus erstellen, bevor Sie es veröffentlichen.

Das Problem für mich war, dass ich nicht den richtigen Benutzernamen des Kontos festgelegt habe, bei dem ich mich angemeldet habe. Sobald jedoch der richtige Benutzername vor dem Image (z. B. YOURNAME/YOURIMAGE) über sein Tag festgelegt wurde, können Sie ihn pushen, ohne zuvor ein neues Repository zu erstellen.

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

0

Gleiches Problem hier beim Bildschieben:

unauthorized: authentication required

Was ich getan habe:

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

Was es gedruckt hat:

--email ist veraltet (aber Anmeldung erfolgreich)

Lösung: Verwenden Sie die neueste Anmeldesyntax.

docker login

Es wird interaktiv nach Benutzername und Passwort gefragt . Dann funktioniert der Bild-Push einfach.

Selbst nach Verwendung der neuen Syntax ~/.docker/config.jsonsieht meine nach dem Anmelden folgendermaßen aus:

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

Der Berechtigungsnachweis befindet sich also im Schlüsselbund von macOS.


0

Ich habe einen ähnlichen Fehler für sudo docker push / sudo docker pull im ecr-Repository erhalten. Dies liegt daran, dass aws cli in meinem Benutzer (abc) und Docker im Root-Benutzer installiert ist. Ich habe versucht, sudo docker push auf meinem Benutzer (abc) auszuführen.

Dies wurde behoben, indem aws cli in root installiert, aws mit aws configure in root konfiguriert und sudo docker push to ecr auf root user ausgeführt wurde


0

Versuchen Sie es docker logoutzuerst und melden Sie sich dann erneut andocker login


0

Sie können die Datei xxx / .docker / config.json irgendwo mv, um damit umzugehen. Versuchen Sie dann erneut, sich anzumelden, um eine neue Datei config.json zu erstellen.

#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

Wenn du rennst windows 7 docker Registry

  1. Start **Docker Quick Start terminal**starten (dieses Terminal aktiviert die Verbindung) Bis Sie Bilder gepusht haben, bleibt das Token am Leben.
  2. Anmeldung docker login
  3. Stellen Sie sicher, dass Sie das Bild mit dem Benutzernamen versehen

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

  4. Bild schieben

    docker image push username/imagename

Hinweis : Bildname in Kleinbuchstaben


0

Ich hatte ein ähnliches Problem.

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

Ich fand heraus, dass selbst wenn ich mich erfolgreich mit dem docker loginBefehl anmelde, jeder Pull fehlschlug. Ich habe versucht, das aufzuräumen, ~/.docker/config.jsonaber nichts hat sich verbessert.

In der Konfigurationsdatei habe ich gesehen, dass die Anmeldeinformationen nicht dort gespeichert wurden, sondern in einem "credsStore": "secretservice". Unter Linux ist dies das seahorseoder Passwords and Keys-Werkzeug. Ich habe dort nachgesehen und das gesamte Docker-Hub-Login bereinigt. Danach funktionierte ein neuer Docker-Login wie erwartet.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.