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 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
  • 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!

Anand
quelle
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
GPrathap
quelle
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.

Radu Gabriel
quelle
# 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": "[email protected]"
                }
        }
}

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": "[email protected]"
                }
        }
}

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="
Anand
quelle
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 [email protected] -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.

bjoern
quelle
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.

atomic77
quelle
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
Gabriel Wu
quelle
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

Sukhmeet Sethi
quelle
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 
Thai Tran
quelle
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'
Neeraj B.
quelle
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.

user1114056
quelle
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.

netz75
quelle
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

Irene Giakoumi
quelle
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.

Alex Soto
quelle
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

Manuel Schmitzberger
quelle
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

smakintel.com
quelle
0

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

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

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.

Badr Bellaj
quelle
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
Blaszard
quelle
0

Gleiches Problem hier beim Bildschieben:

unauthorized: authentication required

Was ich getan habe:

docker login --username=yourhubusername [email protected]

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.

Jing Li
quelle
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

sathish g
quelle
0

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

Rohman Masyhar
quelle
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
Seylul
quelle
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

Dapper Dan
quelle
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.

Alex
quelle