denied:リソースへのリクエストされたアクセスが拒否されました:docker


372

私はこのリンクをたどって最初のDockerイメージを作成しましたが、うまくいきました。今、このリンクからこのイメージを私のDockerリポジトリにプッシュしようとしています。しかし、このイメージをリポジトリにプッシュしようとすると、このタイプのエラーが発生しました。

denied: requested access to the resource is denied

ここに画像の説明を入力してください

誰かがこの問題へのヒントを教えてくれませんか?任意の助けをいただければ幸いです。

注:dockerに正常にログインしました


この間違いを犯していないことを確認してください:stackoverflow.com/a/59626146/4954434
Jithin Pavithran

メールを確認してください。誰がそんな馬鹿なことをするのか考えているなら、プッシュする前にメールを確認しなかった。
Luv33preet

回答:


553

Dockerプッシュの前に、Dockerリポジトリをプライベートに切り替える必要がある場合があります。

おかげで答えが提供するディーン呉このコメントによるSESは、プッシュする前に、することを忘れないでログアウトし、ログインするあなたのドッキングウィンドウステーションアカウントにコマンドラインから

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

ドキュメントによると:

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.

つまり、プッシュする前に画像にタグ付ける必要があります。

docker tag firstimage YOUR_DOCKERHUB_NAME/firstimage

そして、あなたはそれを押すことができるはずです。

docker push YOUR_DOCKERHUB_NAME/firstimage

43
私のためではありません。私はすべての組み合わせを試しましたが[host]/[namespace]/[repo]、それでも同じエラーが発生しました(つまり、私は名前空間として組織とアカウントを持っています)。でも試しましたdocker login ...。プッシュできません:-|
nicerobot 2017

1
hii i follow your command got Error --- Error response from daemon:No such image:ubuntu-nodejs:latest
Yash

34
この回答は承認済みとしてマークされるべきではありませんでした!提供されたソリューションは、他の人が示したように明らかに機能しません。
SamDevx 2017

6
同じ問題があり、適切にログインしていないことがわかりました。「docker login」の動作がおかしくなり、間違ったパスワードを入力しても「login成功」と表示されました。したがって、適切にログインするために、「docker login <url> --username = <username>」を使用しました。これを投稿すると、「docker push」は期待どおりに機能しました。
Devesh Chanchlani

2
この答えは完全ではなく、うまくいきませんでした。Venu Sは私にこの問題を解決する完全な答えを提供してくれました。
rm.rf.etc 2017

184

Docker初心者コースの受講中に同じ問題が発生しました。docker loginDockerプッシュコールの前にを実行して問題を解決しました。


8
FWIW、で資格情報を取得するときに エラーが発生しましたdocker loginsudo docker login私のために働いた。これにより、プライベートリポジトリをプッシュすることができました。
johnsampson 2017年

1
どうやらDockerウェビナーは時代遅れです。
ルイス・デ・スーザ

sudoに関する警告-私の回答を参照してください
rhoerbe '27

80

私は同じ問題を抱えていましたが、ここで与えられた受け入れられた答えは私にとってはうまくいきませんでした。私はいくつかのステップを試してみて、最終的にそれをプッシュするために回避することができました。これが誰かを助けることを願っています。

これが私のために働いたステップです:

1)Dockerにログインします。

docker login -u sirimalla

2)画像ビルドにタグを付ける

ここでの私のイメージ名は:mylocalimageで、デフォルトではタグ:latestが
あり、ユーザー名は:docker cloudに登録されたsirimallaで、:dockerhubという名前のパブリックリポジトリを作成しました

だから私の個人的なリポジトリは今:sirimalla / dockerhub になり、タグでイメージをプッシュしたい:myfirstimagepush

私は次のようにタグ付けしました:

docker tag mylocalimage:latest sirimalla/dockerhub:myfirstimagepush

3)以下のように、画像を個人用のDockerリポジトリにプッシュしました

docker push sirimalla/dockerhub:myfirstimagepush

そして、それは私の個人的なDockerリポジトリにうまくプッシュされました。


2
この答えは私の問題を解決しました。これは受け入れられる答えになるはずです。他の答えは完全ではなく、私にとってはうまくいきませんでした。たとえば、他の回答ではについて言及していませんdocker login。このスレッドに来るまで、私はについて知りませんでしたdocker login
rm.rf.etc 2017

一般的に、あなたは、REF、すべてのコマンドを接頭辞sudoを使用する必要がありますprojectatomic.io/blog/2015/08/...
wmitchell

sudoに関する警告-私の回答を参照してください
rhoerbe '27

1
これは子犬でした。
Dave Hodgkinson、

1
うん、この答えは私の問題を解決しただけです。この問題を解決したい人は誰でも参照してください。
Maha Lak

42

また、イメージにタグを付ける場合は、名前空間を使用してタグを付け、次にリポジトリ/ mydevrepoを使用することにも注意してください。Dockerのドキュメントに従っていると、混乱してしまいました。その後、私は使用しました:

docker login

次に、「タグ付けされた名前」を使用して画像をプッシュしました。

docker push {namespace}/mydevrepo

39

以下のコマンドを使用します。

$ 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

たとえば、manjeet86 / docker-repoのような公開リポジトリがあるので、コマンドは次のようになります。

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

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

:代わりに/それがトリックだったのを見てください。わたしにはできる。/代わりにタグを付けることができるかどうかはわかりませんが、それは:他の目的のためかもしれません。

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


1
これは、おかげでの:代わりに使用して、私にとってうまくいったもの/です。
クリス

このスレッドの問題の考えられる説明: github.com/moby/moby/issues/31760#issuecomment-309812486
gp。

ありがとう、それだけでした。受け入れられた答えである必要がありますimho :)
Nk54

10

dockerがユーザーIDとリポジトリを処理する方法は少し混乱するかもしれません。docker hubにユーザーアカウントxyzを作成するとします。新しいアカウントは自動的に名前空間を確立しますxyz。次に、myrepoというリポジトリを作成します。リポジトリ名は実際にはになりますxyz/myrepo

画像をプッシュするには、次のようにします。

docker push docker.io/xyz/myrepo

必要に応じて、「:latest」または別のタグを追加できます。

requested access to the resource is deniedエラーメッセージが表示された場合:

  1. https://hub.docker.com/に移動し、xyzとしてサインインします。
  2. リポジトリxyz / myrepoをクリックします。
  3. 共同編集者をクリックします。
  4. xyzを共同編集者として追加します。

つまり、サードパーティのパブリックリポジトリから画像をプッシュできないということですか。
sdinesh94 2017年

私のために働きませんでした:(
Nom1fan

10

docker hubに何が起こったのかわかりませんが、投稿された解決策のどれも私にとってうまくいきませんでした。2018年1月の時点で私のために機能するようになった回避策は次のとおりです。

  1. hub.docker.comに移動し、リポジトリをプライベートに変更します
  2. シェルで次のようにします。

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. docker hubに戻り、repoをpublicに戻します。それでうまくいきました。

8

Dockerには、所有できるプライベートリポジトリの数にも制限があります。ローカルマシンからプッシュすることでプライベートリポジトリを作成している場合は、リポジトリが作成されますが、そこにプッシュしたりそこからプルしたりすることはできず、「リソースへのリクエストされたアクセスが拒否されました」エラーが発生します。


常にパブリックレポとしてプッシュする方法
Raja Anbazhagan

7

OS:Ubuntu16.04

理由:クライアント構成ファイル(〜/ .docker / config.json)を削除しました

解決:

  • Dockerを再起動します。
    サービスDockerの再起動
  • ログイン情報を入力し、構成ファイルを自動的に生成する必要があります。
    docker login --username = yourdockerhubername --email=youremail@company.com

1
これが私にとって有効な唯一の解決策でした。私はDockerをアップグレードした後、何らかの理由でmvn dockerfile:pushがこの例外で失敗しました。このconfig.jsonを削除すると修正されました。
anand1st

これも役に立ちました。ログインするには、URLを指定しないか、docker login https://index.docker.io/v1/ -u=yourusername
Docker

7

私の問題は、イメージ名に無効な文字(余分な/)を使用することでした:

myusername/something/image

無効なイメージ名です。myusername / something-imageを試してください。これが誰かを助けることを願っています。


そのようなひどい、不特定のエラーメッセージ!私も同じことをしていた。また、それが繰り返される特殊文字を許可しません例えば、__
ijoseph

うまくいきました、ありがとう!
ケニー・リー

6

今日も同じ問題がありました。私のために働いた唯一のことは明示的に「docker.io」にログインすることでした

docker login docker.io

他のさまざまな名前を試しましたが、ログインは機能しているように見えますが、後で次のエラーが発生します。

リソースへのリクエストされたアクセスが拒否されました


2
これは私にとっても問題を解決したものです。私はdocker login成功せずに試しdocker.ioましたが、最後に明示的にトリックを行いました。
ジョーク、

これは私にとってはそれでした
Glitcher、

docker.ioへの明示的なログインが機能しませんでした。ログインは過去に機能し、現在は機能しなくなりました。
rhoerbe

5

私もこの問題を抱えていました。ここで解決策をテストしましたが、docker loginうまくいかなかったため、少なくとも出力に応じて適切にログインしましたが、画像をプッシュできませんでした。最終的に機能したのは、単に実行することでした。

docker logout

そしてdocker login再び、それはその些細なことでした。何が起こったのかはわかりませんが、強制的に再ログインできました。


1
それも私を助けました!
LeventeOrbán19年

1
ええ、ログアウトすると、それは私のために戻ってきました。ありがとうございました!
ナムG VU

4

Azure Container Registryの使用中にこの問題が発生した場合は、最初にレジストリにログインすることで解決できます。

docker login yourregistry.azurecr.io

次に、レジストリのホスト名と一致するようにイメージにタグを付けます。

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

そして最後にそれを押してください。

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

1
Azureから来ると、これが役立ちました。名前空間ではなく、タグの最初の部分であるレジストリのホスト名です!
binaryguy

4

独自のNexusリポジトリマネージャーにイメージをプッシュしようとする人は、以下を実行してください。

1)Nexusリポジトリマネージャーにログインします(ポート8443は特定のDockerホストリポジトリに関連付けられています)

sudo docker login xxx.mydomain.com:8443

2)NEXUSサーバーのIP / DNSで画像にタグを付けます

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

3)画像をプッシュする

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

常にdocker.ioを参照するjenkins docker pluginに問題がありました。xxx.mydomain.com:8443/myimage:1.0.0のようなタグ付けで問題が解決しました。必ずプロコトールと/ v2 /のものを省略してください。
Himmet Avsar

ポートを追加する理由。xxx.mydomain.comの近くに追加するポート。8443はfot httpsスプリングブートです。もしそれが角度のあるアプリケーションであるとしたら
P Satish Patro

1
@PSatishPatroリポジトリが特定のhttp / httpsポートに解決されるとき、タグはそれをどこにプッシュするかを知る必要があります(実際にはどこに移動するかを指定しないため、パラメーターとして)、上記のように、完全なネクサスのリポジトリとしての正確なURL。
Phil


3

シンプルな作業ソリューション:

ここhttps://hub.docker.com/に移動して、名前を付けたプライベートリポジトリを作成します。たとえば、johnsmith/private-repositoryこれはNAME/REPOSITORYイメージのビルド時にイメージに使用するものです。

  • 最初、 docker login

  • 次に、「docker build -t johnsmith/private-repository:01 .」を使用して画像を作成し、「docker images」を使用して、次の黄色のボックスなどに作成された画像を確認します(表の形式を貼り付けることはできず、テキスト文字列のみを貼り付けます)

johnsmith / private-repository(REPOSITORY)01(TAD)c5f4a2861d6e(IMAGE ID)2日前(作成)305MB(SIZE)

  • 第三に、私は docker push johnsmith/private-repository:01

できた!


2

私の答えは、次の一般的なパイプラインで発生したAzure DevOpsの同様の問題に関連しています(より具体的ですが、誰かが時間を節約するのに役立つ場合があります):

  1. GitHubからソースを取得する
  2. Dockerイメージの作成
  3. dockerイメージをdockerhubにプッシュする

プッシュで受け取ったエラーがdenied: requested access to the resource is deniedここに送られてきました。

$(Build.Repository.Name)画像名に含まれる変数に注意してください。これはデフォルトではgithubからのリポジトリの名前ですが、プッシュを機能させるにはにする必要がありますdockerhub_account_username/your_dockerhub_repository_name

交換する$(Build.Repository.Name)dockerhub_account_username/your_dockerhub_repository_name、両方のビルドおよびプッシュのステップのためのあなたのイメージ名フィールドに。

これは、イメージをどこにプッシュするかを知るためにdockerhub apiで必要です。


2

docker login https://hub.docker.com」を「docker login docker.io」に変更し、ユーザー名とパスワードを入力した後に機能しました。

次に、以下のコマンドに従います。

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

docker push new-repo:tagname

注:「new-repo」には「Docker ID + Repo name」が含まれます

以下のコマンドを実行する前に、Docker Hubに「ubuntu」リポジトリを作成しました。

例:

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

docker push aloktiwari2007/ubuntu:latest

私にとって重要な点は、docker tagコマンドのtagnameでした-<dockeruserid> / <remote repository name>:<tag>。同じタグ識別子をpushコマンドで使用する必要があります。
Tanmay Patil

1

それでも失敗docker loginする場合は、プッシュしようとしているリポジトリが最初に作成されていることを確認してください。


1

私もこの問題を抱えています。無料階層を使用していて、プライベートリポジトリに複数のイメージをプッシュしようとしていることがわかりました。1つの画像を非公開にし、残りの画像を公開しました。


1

私の場合、リポジトリへの管理者権限を持つチームに所属している組織にプッシュしていました。

だから私のプッシュコマンドは: docker push org-name/image-name

ユーザー名/画像名にプッシュできましたが、組織にはプッシュできませんでした。権限をトリプルチェックしました。何もうまくいきませんでした。

解決策は、Dockerハブからリポジトリを削除し、次のコマンドを使用して新たにプッシュすることでした。 docker push org-name/image-name

その価値については、アカウントが組織に変換される前に元々リポジトリがプッシュされたと思います。


1

だから、それが誰にとっても役立つ場合に備えて...
私はこれと同じ問題を抱えていましたが、ここに私の問題とFIXがありました。

  • 私のテストネットワークには「galaxy」という名前のコンピューターがありました。
  • 次のrunコマンドを使用してdockerレジストリをセットアップします。

    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
    

    次に、ネットワーク上のラップトップから銀河に画像をプッシュしようとしていたので、次のようにしました。

    docker login galaxy
    

    これにより、次のようなエラーが発生します。

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

    奇妙なことに、この問題の修正は、次のようなログインを行うことでした。

    docker login galaxy:443
    

    その結果、ログインは成功しました。

    それで私は自分のラップトップから「銀河」に画像をプッシュしようとしました。
    次のような画像のタグをすでに作成しています。

    galaxy/myImage:0.0.1
    

    だから私はこれをやってそれをプッシュしようとしました:

    docker push galaxy/myImage:0.0.1
    

    私は返信を受け取りました:

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

    奇妙なことに、私はこれの修正が次のように最初に画像にタグを付けることであることを発見しました:

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

    ...そして、次のようにプッシュします。

    docker push galaxy:443/myImage:0.0.1
    

    そのため、なんらかの理由で、リポジトリ名の必須部分としてタグにポートを含める必要がありました。



    これが他の人を助けることを願っています。


  • 1

    以前の答えはすべて正解でした。言及されていない情報を追加したいだけです。

    プロジェクトがプライベートプロジェクトの場合、イメージを正しくプッシュするには、read_registryキーを有効にして個人用アクセストークンまたはデプロイトークンを構成する必要があります。

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

    これが役に立てば幸いです(質問がこれまでに投稿されている場合も)


    1

    この答えは、将来の自分にとっても、他の誰にとっても同じです。私は正しくログインしているときにこの正確な問題に遭遇しましたが、プライベートリポジトリの数が私のプランで許可されている制限以上の場合、プライベートリポジトリにプッシュしようとしています。

    プライベートリポジトリをいくつ作成できたかは正確にはわかりませんが、計画に5つのプライベートリポジトリが含まれ、どういうわけか6つある場合、これは受け取るエラーです。

    denied: requested access to the resource is denied

    私の場合、デフォルトの可視性をプライベートに設定しているため、プライベートリポジトリが多すぎる可能性があります。

    デフォルトの可視性

    ここで、所有できるプライベートリポジトリの数を決定します。

    料金プラン

    問題のあるリポジトリを公開すると、問題が明らかになりました。

    リポジトリをプライベートにします5/5


    1

    私はこれが誰か(最初に私として最終的な答えを見る人)を助けることを本当に望みます:

    続けてタイプしてみた

    docker push user/repo/tag
    

    代わりに

    docker push user/repo:tag
    

    私もこのようにタグを作成したので:

    docker tag image user/repo/tag
    

    ...すべての地獄が敗北した。

    私の過ちを繰り返さないことを心から願っています。これで30分も無駄になりました...


    1

    私はさらに別の回答を追加するのが遅いですが、受け入れられた回答と言及されdocker loginている残りの回答には、他の人がコメントで述べている問題を解決するためのエッジケースがありません。

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

    port入力する必要があることを強調すると、まだ検索している人のための解決策である可能性があります。docker loginまたはdocker login <private-repo-host>問題なく接続できますが、画像をプッシュするときに、OPと同じエラーが発生します。

    つまり、ホストまたはポートを定義せずに接続しても、以下を取得できます。

    ...

    ログイン成功

    私の場合、ポートを使用するように設定されたセルフホストのGitLabの組み込みdocker-registryを使用しています4567。レジストリにどのポートからアクセスする必要があるかを確認するのは便利です。上記のポートdocker login <our.gitlab.host>を指定しないとログインは成功しますが、OPが尋ねたのと同じ問題が発生します。

    ...

    プッシュはリポジトリを指します[...]

    拒否:アクセスは禁止されています

    docker.io/dockerhubを使用している場合、この問題は発生しない可能性がありますが、セルフホスト/プライベートレジストリソリューションを使用している場合は、Dockerレジストリのホストとポートの両方を使用して明示的にログインする必要があります。 。


    ありがとう、最も役に立ちました!
    アルファブラボ

    1

    タグ名に誤解を与えないでください。
    これを解決するための私のアプローチ:

    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 
    

    出力:

    denied:リソースへのリクエストされたアクセスが拒否されました


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

    出力:

    試行:ダイジェスト:sha256:405b6f0ae25772ef71b8f59fd6a56ff9b426f50bd24bac2b5db41f65efd3387cサイズ:1365

    誤解を招くのはタグです。必ず理解してください。


    1

    最も簡単な方法は、Dockerデスクトップを使用することです(Windows 10以降およびMacの場合)。

    dockerIDを提供してdockerハブに初めてサインアップ

    次に、マシンのdockerデスクトップアイコンをクリックし、[->設定]-> [docker hub docker / id and password]を使用してログインします。

    ここに画像の説明を入力してください


    0

    画像の名前をusername / image-nameに変更しますdocker tag your-current-image / current-image dockerhub-username / some-name:your-tag(example:latest)


    弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
    Licensed under cc by-sa 3.0 with attribution required.