web-dev-qa-db-ja.com

拒否されました:リソースへのアクセス要求は拒否されました:docker

私は このリンク を使って私の最初のdocker Imageを作成し、それがうまくいったので、この link からこのImageを自分のdockerリポジトリにプッシュしようとしています。しかし、このImageをリポジトリにプッシュしようとしているときはいつでも、このタイプのエラーが発生しました。

denied: requested access to the resource is denied

enter image description here

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

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

238
Keyur Shah

answer /から提供された Dean Wu および このコメント から ses 、プッシュする前に、コマンドラインからdocker hubアカウントにログインすることを忘れないで

docker login

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.

だから、これはあなたがプッシュする前に tag あなたのイメージにしなければならないことを意味します:

docker tag firstimage YOUR_DOCKERHUB_NAME/firstimage

それからあなたはそれをプッシュできるはずです。

docker Push YOUR_DOCKERHUB_NAME/firstimage
353
Webert Lima

港湾労働者初心者コースを取っている間、私は同じ問題を得ました。 dockerのPush呼び出しの前にadocker loginを実行することで問題を解決しました。

176
Dean Wu

私は同じ問題を抱えていたが、ここで与えられた受け入れられた答えは私のために働かなかった。私はいくつかのステップを試してみましたが、ついにプッシュすることができました。これが誰かに役立つことを願っています。

ここに私のために働いたステップがあります:

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

docker login -u sirimalla

2)あなたのイメージビルドにタグを付けます

ここに私のイメージ名は次のとおりです: mylocalimage そしてデフォルトでそれはタグを持っています: latest
そして私のユーザー名は: sirimalla でdocker cloudに登録しました、そして私は: dockerhub という名前の公開リポジトリを作成しました

だから私の個人的なリポジトリは今: sirimalla/dockerhub になります。そして私はタグ:myfirstimagepushで画像をプッシュしたいです。

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

docker tag mylocalimage:latest sirimalla/dockerhub:myfirstimagepush

3)以下のように画像を私の個人的なdockerリポジトリにプッシュしました

docker Push sirimalla/dockerhub:myfirstimagepush

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

47
Venu S

あなたがあなたのイメージにタグを付けるとき、あなたはそれを 名前空間 そしてあなたのリポジトリ/ mydevrepo を使ってタグ付けするということにも注意することもまた重要です。 Dockerのドキュメントに従うと、これは私を混乱させました。その後私が使用しました:

docker login

それから私は 'タグ付けされた名前' を使って私のイメージをプッシュしました。

docker Push {namespace}/mydevrepo
39
Erick Boshoff

下記のコマンドを使用してください。

$ 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

32
MSingh

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を追加します。
10
Paulo Merson

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に戻り、リポジトリをpublicに戻します。それは私のために働いた。
8

OS:Ubuntu16.04

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

溶液:

  • Dockerを再起動してください。
    service docker restart
  • それはログイン情報を入力する必要があり、そして自動的に設定ファイルを生成します。
    docker login --username = yourdockerhubername [email protected]
7
Song

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

5
rghazali

今日も同じ問題がありました。私にとってうまくいった唯一のことは、 "docker.io"に明示的にログインすることでした。

dockerログインdocker.io

私は他のさまざまな名前を試してみました、そして、ログインはうまくいくように見えました、しかし、それは後で「リソースへの要求されたアクセスが拒否されました」というエラーをもたらすでしょう。

5
jsight

アプリからログインします。私は運だけでターミナルからだけ試しています。

これはバージョン17.06.1です

enter image description here

3
Ignacio Pascual

私はこの問題も抱えていました、私は現在のところで解決策をテストしました、しかし役に立たないために、私は少なくともdocker loginの出力に従って正しくログインされました、しかしそれでも私はイメージをプッシュできませんでした。最後にうまくいったのは、単にすることでした。

docker logout

それからdocker login、それはそれほど簡単なことではありませんでした。何が起こったのかわかりませんが、再ログインを強制することはできました。

3
Hito

簡単な解決策:

ここでhttps://hub.docker.com/に移動して、例えばjohnsmith/private-repositoryという名前のPRIVATEリポジトリを作成します。これは、イメージを構築するときにイメージに使用するNAME/REPOSITORYです。

  • まず、docker login

  • 次に、下の黄色のボックスのように、「docker build -t johnsmith/private-repository:01 .」を使用して画像を作成し、「docker images」を使用して作成された画像を確認します。

johnsmith /プライベートリポジトリ(リポジトリ)01(TAD)c5f4a2861d6e(画像ID)2日前(作成済み)305MB(サイズ)

  • 第三に、私はdocker Push johnsmith/private-repository:01を使います

完了しました。

3
Dung

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]
3
hendryanw

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

myusername/something/image

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

3
patrickbadley

自分のNexus Repository Managerにイメージをプッシュしようとしている人は、以下の手順を実行してください。

1)Nexus Repository Managerにログインします(ポート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
2
Phil

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

  1. Githubからソースを入手する
  2. Dockerイメージを構築する
  3. Dockerイメージをdockerhubにプッシュする

Push denied: requested access to the resource is deniedで受け取ったエラーがここに私を送ってきました。

あなたのイメージ名に含まれている変数$(Build.Repository.Name)に注意してください。デフォルトではgithubからのリポジトリの名前ですが、あなたのPushが機能するためにはdockerhub_account_username/your_dockerhub_repository_nameであるべきです。

ビルドステップとプッシュステップの両方で、イメージ名フィールドの$(Build.Repository.Name)dockerhub_account_username/your_dockerhub_repository_nameに置き換えます。

これは、画像をプッシュする場所を知るためにdockerhub APIによって必要とされます。

2
gavri

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

1
Shige

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

だから私のPushコマンドはdocker Push org-name/image-nameでした。

私はusername/image-nameにはプッシュできましたが、組織にはプッシュできませんでした。私は三つの許可をチェックしました。何もうまくいきませんでした。

解決策は、docker hubからリポジトリを削除し、次のコマンドを使用してもう一度プッシュし直すことでした。docker Push org-name/image-name

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

1
schmidlop

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

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

denied: requested access to the resource is denied

私の場合は、デフォルトの表示設定をprivateに設定しているため、あまりにも多くのプライベートリポジトリが作成されてしまう可能性があります。

Default Visibility

これが、プライベートリポジトリをいくつ持つことができるかを決めるところです。

Billing Plans

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

Make Repository Private 5 of 5

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

1
louis_guitton

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

0
Italo José

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

  • 私のテストネットワークには、 'galaxy'という名前のコンピューターがありました。
    • 次の実行コマンドを使用して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'にプッシュしようとしました。
      私はすでにこのような画像のタグを作成していました。

      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
      

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



      これが他の人に役立つことを願っています。

  • 0
    Deoji

    これに対するもう一つの(かなり賢い)理由:あなたはあなたの計画で個人的なリポジトリを使いません。

    0
    Costa Shapiro

    Gitに関する私の問題はプロジェクトのパーミッション設定でした。設定 - >一般 - >可視性、プロジェクトの機能、パーミッションの "コンテナレジストリ"を有効にし、プロジェクトのコンテナレジストリを有効にすることで修正しました( link ):

    enter image description here

    「Docker for Windows」アプリケーションからサインアウトし、 https://hub.docker.com/ /サイトからサインアウトしてから、「docker login」および「docker Push」を実行します。それは私を助けました。

    0
    Vladimir

    TL; DR docker loginはmacOSでは機能しませんでしたが、アプリからのdocker loginは機能しました

    ターミナルから直接使用すると、コマンドdocker loginが認証情報を正常に要求し、正しく入力した後(電子メールを覚えていない、Docker IDのみが機能する)、login succeededを発表しましたが、Pushへの要求はdenied: requested access to the resource is deniedで終わる

    ただし、実行中のmacOs Dockerアプリ(ツールバーのアイコンから参照)からログインすると機能しました。そのため、docker loginと実行中のdockerアプリ/デーモンとの間に矛盾が生じる可能性があります

    0

    Azure DevOpsから来ました。

    私の場合は、dockerだけでなくdocker-composeを使用し、ビルドパイプラインをyamlで作成しました。

    - task: DockerCompose@0
      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
    

    私が得たメッセージは、それがdocker.ioにプッシュしようとしているということを具体的に言っていました。私はこれを私のAzure Container Registryに送ることを意図していました。

    欠けていたものは入力の下でこの行でした:

    containerregistrytype: Azure Container Registry
    

    上記のyamlを構築した既存のパイプラインウィザードは、この行をまったく持っていませんでした。うまくいけば、これは他の誰かがAzure DevOpsで自分の髪の毛を引き出すのに役立ちます。

    0
    Kilanash

    前の答えはすべて正しかった、私は私がちょうど言及されていなかった見た情報を追加したいです。

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

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

    これが参考になることを願っています(質問がその時点で投稿されている場合も同様)。

    0
    AtomiX84

    コマンドプロンプトからdockerログインが機能しませんでした。プッシュしようとしたときに、「リソースへの要求されたアクセスが拒否されました」というメッセージが表示され続けました。

    Windowsアプリ自体のdockerにサインインした後、docker Pushは問題なく動作しました。これが誰かに役立つことを願っています。

    0
    Brett Edwards

    他の誰かがこれに遭遇した場合 - その原因は、私の場合は、プッシュイメージに(廃止予定の)docker composeアプローチを使用していたことです。予想されるdocker Pushに切り替えることで私のための問題は解決しました。

    0
    Dan Nissenbaum

    私の場合、Sudo-Eはこのメッセージで失敗しました。解決策はSudoなしでDockerへのアクセスを提供することでした(グループDockerを作成し、(Jenkins)ユーザーをグループに追加し、/var/run/docker.sockにグループを設定します)。今docker PushはSudoを必要としません、そしてそれは動作します。

    0
    rhoerbe

    私がこれが誰かに役立つことを本当に願っています(誰かが私自身として最初に最終的な答えを見る)

    続けて入力しようとしました

    docker Push user/repo/tag
    

    代わりに

    docker Push user/repo:tag
    

    私も自分のタグをこのようにしたので:

    docker tag image user/repo/tag
    

    ...すべての地獄は負けました。

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

    0
    GeorgiG

    港湾労働者ログインの後、あなたは接頭辞であなたの画像に名前を付ける必要があります。

    例えばdocker-hubのユーザー名がShahの場合、画像は次のようになります。

    Shah/firstimage
    
    0
    reck mi