Ich folge diesem Link , um mein erstes Docker-Image zu erstellen, und es ist erfolgreich verlaufen, und jetzt versuche ich, dieses Image von diesem Link in mein Docker-Repository zu verschieben. Immer wenn ich versuche, dieses Bild in das Repository zu verschieben, habe ich diese Art von Fehler erhalten.
denied: requested access to the resource is denied
Könnte mir jemand einen Hinweis auf dieses Problem geben? Jede Hilfe wäre dankbar.
Hinweis: Ich habe mich erfolgreich im Docker angemeldet
Dank der Antwort von Dean Wu und diesem Kommentar von ses müssen Sie sich vor dem Drücken von der Befehlszeile aus bei Ihrem Docker-Hub-Konto anmelden
docker login
Nach den docs :
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.
Das bedeutet, dass Sie Ihr Image tag _ muss, bevor Sie drücken:
docker tag firstimage YOUR_DOCKERHUB_NAME/firstimage
und dann solltest du es schieben können.
docker Push YOUR_DOCKERHUB_NAME/firstimage
Ich habe das gleiche Problem beim Docker-Anfängerkurs bekommen. Ich löste das Problem, indem ich vor dem Docker-Push-Aufruf einen docker login
ausführte.
Ich hatte das gleiche Problem, aber die hier gegebene akzeptierte Antwort funktionierte nicht für mich ... Ich versuchte ein paar Schritte und konnte es endlich schieben. Hoffe das hilft jemandem.
Hier sind die Schritte für mich:
1) Melden Sie sich am Docker an.
docker login -u sirimalla
2) Markieren Sie Ihren Image-Build
mein Bildname hier ist: mylocalimage und standardmäßig hat es das Tag: latest
und mein Benutzername ist: sirimalla wie bei Docker Cloud registriert, und ich habe ein öffentliches Repository mit dem Namen: dockerhub erstellt.
so wird mein persönliches Repository jetzt: sirimalla/dockerhub und ich möchte mein Bild mit dem Tag Push: myfirstimagepush
Ich habe wie folgt getaggt:
docker tag mylocalimage:latest sirimalla/dockerhub:myfirstimagepush
3) Das Bild wie unten in mein persönliches Docker-Repository verschoben
docker Push sirimalla/dockerhub:myfirstimagepush
Und es wurde erfolgreich auf mein persönliches Docker-Repo übertragen.
Beachten Sie auch, dass Sie beim Markieren Ihres Bildes dieses mit dem Namespace und dann mit Ihrem Repository/ mydevrepo kennzeichnen. Dies verwirrte mich, wenn ich den Docker-Dokumenten folgte. Danach habe ich verwendet:
docker login
Und dann habe ich mein Image mit dem 'markierten Namen' gepusht.
docker Push {namespace}/mydevrepo
Verwenden Sie die folgenden Befehle:
$ 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
z.B. Ich habe ein öffentliches Repository wie manjeet86/docker-repo, die Befehle wären also:
$ docker tag first-image manjeet86/docker-repo:first-image
$ docker Push manjeet86/docker-repo:first-image
Sehen Sie einfach :
statt /
, das war der Trick. Für mich geht das. Ich weiß nicht, ob Sie mit /
anstelle von :
auch Tags verwenden können, aber das kann zu einem anderen Zweck sein.
https://docs.docker.com/engine/reference/commandline/tag/#examples
Die Art und Weise, wie Andockbenutzer mit Benutzer-IDs und Repositorys umgehen, kann etwas verwirrend sein. Angenommen, Sie erstellen ein Benutzerkonto xyz auf dem Docker Hub. Das neue Konto erstellt automatisch einen Namespace xyz
. Dann erstellen Sie ein Repository mit dem Namen myrepo. Der Repository-Name lautet tatsächlich xyz/myrepo
.
Um ein Bild zu pushen, sollten Sie folgendes tun:
docker Push docker.io/xyz/myrepo
Sie können bei Bedarf ": latest" oder ein anderes Tag hinzufügen.
Wenn Sie die requested access to the resource is denied
-Fehlermeldung erhalten:
OS: Ubuntu16.04
Grund: Ich habe die Client-Konfigurationsdatei gelöscht (~/.docker/config.json).
Lösung:
Docker hat auch eine Begrenzung für die Anzahl der privaten Repositorys, die Sie haben können. Wenn Sie ein privates Repository erstellen, indem Sie von Ihrem lokalen Computer aus pushen, wird das Repository erstellt. Es kann jedoch nichts weiter auf das Repository verschoben oder daraus abgerufen werden, und Sie erhalten den Fehler "Der Zugriff auf die Ressource wurde verweigert".
Ich hatte heute das gleiche Problem. Das einzige, was für mich funktioniert hat, war ein explizites Login bei "docker.io":
docker login docker.io
Ich habe verschiedene andere Namen ausprobiert, und der Login scheint zu funktionieren, aber es würde später zu einem Fehler "angeforderter Zugriff auf die Ressource wird verweigert" geführt.
Ich bin nicht sicher, was mit dem Docker-Hub passiert ist, aber keine der veröffentlichten Lösungen funktionierte für mich. Hier ist die Umgehung, mit der ich ab Januar 2018 gearbeitet habe:
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
Einfache Arbeitslösung:
Gehen Sie hier https://hub.docker.com/
, um ein PRIVATE-Repository mit Namen zu erstellen. Beispiel: johnsmith/private-repository
Dies ist der NAME/REPOSITORY
, den Sie für Ihr Image verwenden, wenn Sie das Image erstellen.
Zuerst docker login
Zweitens verwende ich "docker build -t johnsmith/private-repository:01 .
", um ein Bild zu erstellen, und ich verwende "docker images
", um das erstellte Bild wie in diesem gelben Feld unten zu bestätigen:
johnsmith/private-repository (REPOSITORY) 01 (TAD) c5f4a2861d6e (IMAGE ID) vor 2 Tagen (CREATED) 305 MB (GRÖSSE)
docker Push johnsmith/private-repository:01
Erledigt!
Mein Problem bestand ganz einfach darin, ungültige Zeichen (ein zusätzliches /) in meinem Bildnamen zu verwenden:
myusername/something/image
ist ein ungültiger Bildname. Versuchen Sie es mit myusername/something-image. Hoffe das hilft jemandem.
Gehen Sie wie folgt vor, wenn Sie versuchen, das Image auf den eigenen Nexus-Repository-Manager zu übertragen:
1) Melden Sie sich bei Ihrem Nexus Repository Manager an (Port 8443 ist einem bestimmten Docker Host Repository zugeordnet).
Sudo docker login xxx.mydomain.com:8443
2) Kennzeichnen Sie das Bild mit IHREM NEXUS-SERVER IP/DNS
Sudo docker tag myimage:latest xxx.mydomain.com:8443/myimage:1.0.0
3) Drücken Sie auf das Bild
Sudo docker Push xxx.mydomain.com:8443/myimage:1.0.0
Wenn Sie dieses Problem bei der Verwendung der Azure-Container-Registrierung feststellen, können Sie es beheben, indem Sie sich zuerst bei Ihrer Registrierung anmelden.
docker login yourregistry.azurecr.io
Und kennzeichnen Sie Ihr Bild dann mit dem Hostnamen Ihrer Registrierung.
docker image tag yourimagename:[version] yourregistry.azurecr.io/yourimagename:[version]
Und dann endlich schieben.
docker Push yourregistry.azurecr.io/yourimagename:[version]
Ich habe auch dieses Problem. Es stellt sich heraus, dass ich die freie Stufe benutze und versuche, mehr als ein Image in das private Repository zu verschieben. 1 Image privat machen und der Rest arbeitete für mich.
Ich war auch bei diesem Problem, ich habe die Lösungen hier getestet, aber ohne Erfolg war ich richtig eingeloggt, zumindest entsprechend der Ausgabe von docker login
, aber ich konnte das Bild nicht schieben. Was schließlich funktioniert hat, war einfach zu tun:
docker logout
Und dann wieder docker login
, es war so trivial. Ich bin nicht sicher, was passiert ist, aber das erneute Login hat erzwungen.
Wenn es nach docker login
immer noch fehlschlägt, stellen Sie sicher, dass das Repository, in das Sie den Push versetzen möchten, erstellt wurde.
benennen Sie Ihr Bild in Benutzername/Bildname um Docker-Tag Ihr-aktuelles-Bild/aktuelles-Bild
In diesem Fall ist es hilfreich für alle ...
Ich hatte das gleiche Problem und hier ist was mein Problem und das FIX war.
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
Dann habe ich versucht, ein Bild von einem Laptop im Netzwerk in die Galaxie zu schieben, also habe ich folgendes gemacht:
docker login galaxy
Dies würde mir einen Fehler geben, der besagt:
Login did not succeed, error: Error response from daemon:
Get https://galaxy/v2/: x509: certificate signed by unknown authority
Seltsamerweise bestand die Lösung für dieses Problem darin, ein Login wie folgt durchzuführen:
docker login galaxy:443
Dies führte zu einem erfolgreichen Login.
Also versuchte ich, das Bild von meinem Laptop in die "Galaxie" zu verschieben.
Ich hatte bereits ein Tag für mein Bild erstellt, das so aussah:
galaxy/myImage:0.0.1
Also habe ich versucht es so zu schieben:
docker Push galaxy/myImage:0.0.1
Worauf ich die Antwort bekam:
The Push refers to repository [docker.io/galaxy/myImage]
7ab460574f86: Preparing
1aecaf56754d: Preparing
1df1b5f06ca4: Preparing
denied: requested access to the resource is denied
Seltsamerweise entdeckte ich, dass das Problem darin bestand, das Bild zunächst wie folgt zu taggen:
docker tag myImage:0.0.1 galaxy:443/myImage:0.0.1
... und dann den Push so machen:
docker Push galaxy:443/myImage:0.0.1
Aus irgendeinem Grund musste ich den Port als erforderlichen Teil des Repository-Namens in das Tag aufnehmen.
Hoffe das hilft anderen.
Ein weiterer (ziemlich kluger) Grund dafür: Sie haben keine privaten Repos mit Ihrem Plan.
Mein Problem bei Git war die Projektberechtigungskonfiguration. Ich habe es behoben, indem ich die "Container-Registrierung" in Einstellungen-> Allgemein-> Sichtbarkeit, Projektfunktionen, Berechtigungen und die Container-Registrierung für mein Projekt aktiviert habe ( Link ):
Melden Sie sich von der "Docker for Windows" -Anwendung ab und von https://hub.docker.com/ site ab und führen Sie nach "docker login" und "docker push" ..__ aus.
TL; DR docker login
funktionierte unter macOS nicht, aber der Docker-Login über die App funktionierte
Wenn der Befehl docker login
direkt vom Terminal aus verwendet wurde, wurden meine Anmeldeinformationen erfolgreich abgefragt. Nachdem ich sie korrekt eingegeben hatte (keine E-Mail-Adresse, nur die Docker-ID funktioniert), wurde login succeeded
angekündigt, aber jede Anforderung an Push wurde ausgeführt landen in einem denied: requested access to the resource is denied
Als ich mich jedoch über die ausgeführte macOs Docker-App anmeldete (siehe das Symbol in der Symbolleiste), funktionierte es. Es kann also zu Inkonsistenzen zwischen docker login
und der ausgeführten Docker-App/dem ausgeführten Daemon kommen
Ich bin mit der gleichen Nachricht hierher gekommen, aber von Azure DevOps.
In meinem Fall habe ich docker-compose und nicht nur docker verwendet und die Build-Pipeline in yaml geschrieben.
- task: [email protected]
displayName: 'Push services'
inputs:
azureSubscription: '$(Parameters.azureSubscriptionEndpoint)'
azureContainerRegistry: '$(Parameters.azureContainerRegistry)'
dockerComposeFile: '$(Parameters.dockerComposeFile)'
additionalDockerComposeFiles: |
docker-compose.release.yml
docker-compose.ci.yml
dockerComposeFileArgs: 'PublishFolder=publish'
action: 'Push services'
additionalImageTags: '$(Build.BuildId)'
includeLatestTag: true
Die Nachricht, die ich erhielt, lautete speziell, dass versucht wurde, auf docker.io zu pushen, was nicht das war, was ich wollte. Ich hatte beabsichtigt, dass dies zu meiner Azure-Container-Registrierung geht.
Was fehlte, war diese Zeile unter den Eingaben:
containerregistrytype: Azure Container Registry
Der vorhandene Pipeline-Assistent, der den obigen Yaml erstellt hat, hatte diese Zeile überhaupt nicht. Hoffentlich hilft dies jemand anderem dabei, sich die Haare über Azure DevOps auszuziehen.
In meinem Fall habe ich zu einer Organisation gedrängt, in der ich in einem Team bin, das über Administratorrechte für das Repository verfügt.
also mein Push-Befehl war: docker Push org-name/image-name
Ich könnte erfolgreich auf Benutzername/Image-Name drücken, aber nicht auf die Organisation. Ich habe die Berechtigungen dreifach geprüft. Nichts hat geklappt.
Die Lösung bestand darin, das Repo vom Docker-Hub zu löschen und erneut mit: docker Push org-name/image-name
zu aktualisieren.
Ich glaube, das Repo wurde ursprünglich vor der Umwandlung des Kontos in eine Organisation durchgeschoben.
alle vorherigen Antworten waren korrekt. Ich möchte nur hinzufügen, dass eine Information, die ich sah, nicht erwähnt wurde.
Wenn es sich bei dem Projekt um ein privates Projekt handelt, muss das Image korrekt mit einem persönlichen Zugriffstoken oder einem Bereitstellungstoken mit aktiviertem read_registry-Schlüssel konfiguriert werden.
source: https://gitlab.com/help/user/project/container_registry#using-with-private-projects
hoffe das ist hilfreich (auch wenn die frage bisher in der zeit gepostet wurde)
docker-Anmeldung über die Eingabeaufforderung funktionierte nicht. Ich erhielt immer wieder "angeforderten Zugriff auf die Ressource wurde verweigert".
Nachdem Sie sich beim Docker für Windows-App angemeldet hatten, funktionierte Docker Push einwandfrei. Hoffe das hilft jemandem.
Für den Fall, dass jemand anderes auf dieses Problem stößt - in meinem Fall bestand die Ursache darin, dass ich den (veralteten) docker compose
-Ansatz für Push-Bilder verwendete. Der Wechsel zum erwarteten docker Push
hat das Problem für mich gelöst.
Diese Antwort ist für mein zukünftiges Selbst genauso wichtig wie für alle anderen. Dieses genaue Problem ist mir bekannt, wenn ich korrekt angemeldet bin, aber ich versuche, zu einem privaten Repo zu pushen, wenn die Anzahl der privaten Repos größer oder gleich der durch meinen Plan zulässigen Grenze ist.
Ich bin nicht genau sicher, wie ich zu viele private Repos erstellen konnte, aber wenn mein Plan 5 private Repos umfasst, und ich habe irgendwie 6, dann ist dies der Fehler, den ich erhalte:
denied: requested access to the resource is denied
In meinem Fall ist es möglich, dass ich zu viele private Repositorys hatte, weil meine Standardsichtbarkeit auf privat gesetzt wurde:
Hier bestimmen Sie, wie viele private Repos Sie haben können:
Nachdem ich das problematische Repo veröffentlicht hatte, wurde das Problem offensichtlich:
In meinem Fall ist Sudo -E mit dieser Nachricht fehlgeschlagen. Die Lösung bestand darin, den Zugriff auf das Docker ohne Sudo zu ermöglichen (Erstellen eines Gruppen-Dockers, Hinzufügen des Benutzers (Jenkins) zur Gruppe, Festlegen der Gruppe auf /var/run/docker.sock) Nun benötigt docker Push
kein Sudo und es funktioniert.
Ich hoffe wirklich, dass dies jemandem hilft (der die letzten Antworten zuerst als mich ansieht):
Ich habe ständig versucht zu tippen
docker Push user/repo/tag
Stattdessen
docker Push user/repo:tag
Da habe ich auch mein Tag so gemacht:
docker tag image user/repo/tag
... die Hölle ging verloren.
Ich hoffe aufrichtig, dass Sie meinen Fehler nicht wiederholen. Ich habe 30 Minuten dafür verschwendet ...
Meine Antwort bezieht sich auf ähnliche Probleme mit Azure DevOps, die ich mit der folgenden allgemeinen Pipeline hatte (sie ist genauer, aber es kann jemandem helfen, Zeit zu sparen):
Der Fehler, den ich bei Push denied: requested access to the resource is denied
erhalten habe, hat mich hierher geschickt.
Bitte achten Sie auf die Variable $(Build.Repository.Name)
, die in Ihrem Bildnamen enthalten ist. Standardmäßig ist dies der Name des Repositorys von github. Damit Ihr Push jedoch funktioniert, sollte es dockerhub_account_username/your_dockerhub_repository_name
sein.
Ersetzen Sie $(Build.Repository.Name)
durch dockerhub_account_username/your_dockerhub_repository_name
in Ihrem Image-Namensfeld für Build- und Push-Schritte.
Dies wird von der Dockerhub-API benötigt, um zu wissen, wohin das Bild verschoben werden soll.
Nach dem Docker-Login müssen Sie Ihrem Image einen Präfix geben.
z.B. Wenn Ihr Benutzername im Docker-Hub Shah
ist, sollte das Bild Folgendes sein:
Shah/firstimage