web-dev-qa-db-ja.com

DockerコンテナをプッシュするとGoogleコンテナレジストリへのアクセスが拒否されました

このチュートリアル を使用して、DockerコンテナをGoogleコンテナレジストリにプッシュしようとしましたが、実行すると

gcloud docker Push b.gcr.io/my-bucket/image-name

エラーが発生します:

The Push refers to a repository [b.gcr.io/my-bucket/my-image] (len: 1)
Sending image list
Error: Status 403 trying to Push repository my-bucket/my-image: "Access denied."

これ以上の説明が見つかりませんでした(-D、-debug、-verbose引数が認識されませんでした)、gcloud auth listおよびdocker info両方のサービスに接続していることを教えてください。

私が欠けているものはありますか?

14
hilnius

Google Cloud VMインスタンスを作成するときは、十分なアクセス権があることを確認してください。

オプション1

[IDとAPIアクセス]で、[すべてのクラウドAPIへのフルアクセスを許可する]を選択します。

enter image description here

オプション2(推奨)

[IDとAPIアクセス]で、[各APIのアクセスを設定]を選択し、[ストレージの読み取り/書き込み]を選択します。

enter image description here

7
Yuchen Zhong

gsutilを使用してACLをチェックし、バケットへの書き込み権限があることを確認します。

$ gsutil acl get gs://<my-bucket>

使用しているアカウントがどのグループに属しているかを確認する必要があります(「所有者」、「編集者」、「閲覧者」など)。

[〜#〜] edit [〜#〜]:私は最近、これと非常によく似た問題を経験しました。@ lampisが彼の投稿で言及しているように、これは、VMからイメージをプッシュしようとしたときに、正しいアクセス許可スコープが設定されていなかったためです。残念ながら、現在、a VMが作成されたので、VM(ディスクが自動削除に設定されていることを確認してください!))を削除し、VM正しいスコープで( 'compute-rw'、 'storage-rw'で十分なようです)。ただし、それほど時間はかかりません;-)。

こちらの--scopesセクションをご覧ください: https://cloud.google.com/sdk/gcloud/reference/compute/instances/create

5

私にとっては、行の先頭にgcloudを付けるのを忘れていました(そして、dockerがどのように認証されるのか疑問に思いました):

$ gcloud docker Push <image>
4
Wernight

私はこれを見ていますが、断続的にです。例えばエラーが拒否される場合があります:リクエスト "/ v2/...."からの "latest"のアクセスが拒否されましたが、再試行すると機能します。

他の誰かがこれを経験していますか?

3
Sam Kenny

ターミナルで、以下のコードを実行します

$ Sudo docker login -u oauth2accesstoken -p "$(gcloud auth print-access-token)" https://[HOSTNAME]

Where-[HOSTNAME]は、コンテナのレジストリの場所です(gcr.io、us.gcr.io、eu.gcr.io、またはasia.gcr.ioのいずれかです)。 $ Sudo docker images)を実行して、タグ付けされた画像を確認してください。

これで問題が解決しない場合は、VMのアクセススコープを確認してみてください。

1
Mekky_Mayata

Docker 1.7.0を使用している場合、認証の処理方法に重大な変更があり、gcloud dockerdocker loginを組み合わせて使用​​しているユーザーに影響します。

gcloud components updateから最新バージョンのgcloudを使用していることを確認してください。

これまでのところ、これはgcloud dockerdocker-compose、およびDocker認証ファイルの読み取り/書き込みを行っていた他のツールに影響を与えるようです。

うまくいけば、これが役立つでしょう。

1
mattmoor

ここでも同じ問題があります。 https://cloud.google.com/tools/container-registry/#access_denied のトラブルシューティングセクションはあまり役に立ちませんでした。 DockerとGCloudを完全に更新しました。他に何をすべきかわからない。

ところで、私は「gcr.io」にプッシュしようとしています。

修繕。私は開発マシンとしてコンピューティングエンジンでVMを使用していましたが、ストレージで十分なリグネスを提供していなかったようです。

1
lampis

今日、Dockerコンテナをプッシュすると、Google KubernetesEngineで実行されているJenkins内でもこのエラーが発生しました。その理由は、以前に行ったgcpでのノードプールノードバージョンの1.9.6-gke.1から1.9.7-gke.0へのアップグレードでした。ダウングレード後に再び動作しました。

0
Techradar

アクセスが拒否されましたでも同じ問題が発生し、タグを使用して新しいイメージを作成することで解決しました:

docker tag IMAGE_WITH_ACCESS_DENIED gcr.io/my-project/my-new-image:test

その後、私はプッシュコンテナレジストリにそれをすることができました:

gcloud docker -- Push gcr.io/my-project/my-new-image:test
0
Majico

現在のマシンからgcloudにログインする必要があります。

gcloud auth login
0
Esthon Medeiros