私は このリンク を使って私の最初のdocker Imageを作成し、それがうまくいったので、この link からこのImageを自分のdockerリポジトリにプッシュしようとしています。しかし、このImageをリポジトリにプッシュしようとしているときはいつでも、このタイプのエラーが発生しました。
denied: requested access to the resource is denied
誰かが私にこの問題へのヒントをくれますか?任意の助けをいただければ幸いです。
注:私はdockerに正常にログインしました
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
港湾労働者初心者コースを取っている間、私は同じ問題を得ました。 dockerのPush呼び出しの前にadocker login
を実行することで問題を解決しました。
私は同じ問題を抱えていたが、ここで与えられた受け入れられた答えは私のために働かなかった。私はいくつかのステップを試してみましたが、ついにプッシュすることができました。これが誰かに役立つことを願っています。
ここに私のために働いたステップがあります:
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リポジトリにプッシュされました。
あなたがあなたのイメージにタグを付けるとき、あなたはそれを 名前空間 そしてあなたのリポジトリ/ mydevrepo を使ってタグ付けするということにも注意することもまた重要です。 Dockerのドキュメントに従うと、これは私を混乱させました。その後私が使用しました:
docker login
それから私は 'タグ付けされた名前' を使って私のイメージをプッシュしました。
docker Push {namespace}/mydevrepo
下記のコマンドを使用してください。
$ 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
DockerがユーザーIDとリポジトリーを処理する方法は少しややこしいかもしれません。 docker hubにユーザーアカウントxyzを作成したとしましょう。新しいアカウントは自動的にネームスペースxyz
を確立します。その後、myrepoというリポジトリを作成します。リポジトリ名は実際にはxyz/myrepo
になります。
画像をプッシュするには:
docker Push docker.io/xyz/myrepo
必要ならば ":latest"または別のタグを追加することができます。
requested access to the resource is denied
エラーメッセージが表示されたら:
Docker hubに何が起こったのかわからないが、投稿された解決策のどれも私のために働かなかった。 2018年1月現在、私のために働いていた回避策は次のとおりです。
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
OS:Ubuntu16.04
理由:クライアントの設定ファイル( 〜/ .docker/config.json )を削除しました。
溶液:
Dockerはあなたが持つことができるプライベートリポジトリの数にも制限があります。ローカルマシンからプッシュしてプライベートリポジトリを作成している場合は、リポジトリが作成されますが、それ以上プッシュしたりプルしたりすることはできず、「リソースへの要求されたアクセスは拒否されます」というエラーが表示されます。
今日も同じ問題がありました。私にとってうまくいった唯一のことは、 "docker.io"に明示的にログインすることでした。
dockerログインdocker.io
私は他のさまざまな名前を試してみました、そして、ログインはうまくいくように見えました、しかし、それは後で「リソースへの要求されたアクセスが拒否されました」というエラーをもたらすでしょう。
私はこの問題も抱えていました、私は現在のところで解決策をテストしました、しかし役に立たないために、私は少なくともdocker login
の出力に従って正しくログインされました、しかしそれでも私はイメージをプッシュできませんでした。最後にうまくいったのは、単にすることでした。
docker logout
それからdocker login
、それはそれほど簡単なことではありませんでした。何が起こったのかわかりませんが、再ログインを強制することはできました。
簡単な解決策:
ここで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
を使います完了しました。
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]
私の問題は非常に単純に私のイメージ名に無効な文字(余分な/)を使用することでした:
myusername/something/image
無効なイメージ名です。 myusername/something-imageを試してください。これが誰かに役立つことを願っています。
自分の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
私の答えは、次の一般的なパイプラインで発生したAzure DevOpsの同様の問題に関連しています(より具体的ですが、時間を節約するのに役立つ場合があります)。
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によって必要とされます。
私もこの問題を抱えています。私は無料の層を使用しており、プライベートリポジトリに複数の画像をプッシュしようとしていることがわかりました。 1枚の画像を非公開にし、他の人を公開することは私のために働きました。
私の場合は、自分がリポジトリへの管理者権限を持つチームに所属している組織にプッシュしていました。
だから私のPushコマンドはdocker Push org-name/image-name
でした。
私はusername/image-nameにはプッシュできましたが、組織にはプッシュできませんでした。私は三つの許可をチェックしました。何もうまくいきませんでした。
解決策は、docker hubからリポジトリを削除し、次のコマンドを使用してもう一度プッシュし直すことでした。docker Push org-name/image-name
その価値のために、私はアカウントが組織に変換される前にリポジトリが元々プッシュされたと思います。
この答えは私の将来の自己にとっても他の人にとっても同じです。正しくログインしたときにこの問題に遭遇しましたが、プライベートリポジトリの数が自分の計画で許可されている限度以上になったときにプライベートリポジトリにプッシュしようとしています。
私があまりにも多くのプライベートリポジトリを作成できたかどうかは正確にはわかりませんが、計画に5つのプライベートリポジトリが含まれていて、どうにか6つのプライベートリポジトリがある場合、これがエラーになります。
denied: requested access to the resource is denied
私の場合は、デフォルトの表示設定をprivateに設定しているため、あまりにも多くのプライベートリポジトリが作成されてしまう可能性があります。
これが、プライベートリポジトリをいくつ持つことができるかを決めるところです。
問題のあるレポを公開すると、問題が明らかになりました。
それでもdocker login
の後でも失敗する場合は、プッシュしようとしているリポジトリが最初に作成されたことを確認してください。
あなたの画像の名前をusername/image-name docker tagに変更しますyour-current-image/current-image dockerhub-username/some-name:your-tag(例:latest)
だから、それは誰にとっても役立つことになると思います...
私はこれと同じ問題を抱えていましたが、ここに私の問題とFIXがありました。
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
そのため、何らかの理由で、リポジトリ名の必須部分としてタグにポートを含める必要がありました。
これが他の人に役立つことを願っています。
これに対するもう一つの(かなり賢い)理由:あなたはあなたの計画で個人的なリポジトリを使いません。
Gitに関する私の問題はプロジェクトのパーミッション設定でした。設定 - >一般 - >可視性、プロジェクトの機能、パーミッションの "コンテナレジストリ"を有効にし、プロジェクトのコンテナレジストリを有効にすることで修正しました( link ):
「Docker for Windows」アプリケーションからサインアウトし、 https://hub.docker.com/ /サイトからサインアウトしてから、「docker login」および「docker Push」を実行します。それは私を助けました。
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アプリ/デーモンとの間に矛盾が生じる可能性があります
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で自分の髪の毛を引き出すのに役立ちます。
前の答えはすべて正しかった、私は私がちょうど言及されていなかった見た情報を追加したいです。
プロジェクトが正しくプッシュされるプライベートプロジェクトの場合は、read_registryキーを有効にしてイメージを個人用アクセストークンまたはデプロイトークンに設定する必要があります。
ソース: https://gitlab.com/help/user/project/container_registry#using-with-private-projects
これが参考になることを願っています(質問がその時点で投稿されている場合も同様)。
コマンドプロンプトからdockerログインが機能しませんでした。プッシュしようとしたときに、「リソースへの要求されたアクセスが拒否されました」というメッセージが表示され続けました。
Windowsアプリ自体のdockerにサインインした後、docker Pushは問題なく動作しました。これが誰かに役立つことを願っています。
他の誰かがこれに遭遇した場合 - その原因は、私の場合は、プッシュイメージに(廃止予定の)docker compose
アプローチを使用していたことです。予想されるdocker Push
に切り替えることで私のための問題は解決しました。
私の場合、Sudo-Eはこのメッセージで失敗しました。解決策はSudoなしでDockerへのアクセスを提供することでした(グループDockerを作成し、(Jenkins)ユーザーをグループに追加し、/var/run/docker.sockにグループを設定します)。今docker Push
はSudoを必要としません、そしてそれは動作します。
私がこれが誰かに役立つことを本当に願っています(誰かが私自身として最初に最終的な答えを見る)
続けて入力しようとしました
docker Push user/repo/tag
代わりに
docker Push user/repo:tag
私も自分のタグをこのようにしたので:
docker tag image user/repo/tag
...すべての地獄は負けました。
私はあなたが私の過ちを繰り返さないことを心から願っています。これで30分くらい無駄になりました….
港湾労働者ログインの後、あなたは接頭辞であなたの画像に名前を付ける必要があります。
例えばdocker-hubのユーザー名がShah
の場合、画像は次のようになります。
Shah/firstimage