web-dev-qa-db-ja.com

GCP:Compute EngineからContainer Registryにアクセスできない

Dockerイメージをgcr.io/my-project/my-image:latestのGoogle Container Registryにプッシュしました。同じプロジェクトで、Googleストレージへの読み取りアクセス権(デフォルトで有効)を備えたCOS(コンテナー最適化OS)に基づいてGoogle Compute Engineインスタンスを作成しました。また、Googleストレージへの読み取りアクセス権をサービスアカウントに付与しました。

ただし、GCEインスタンスからイメージをプルすることはできません。

$docker pull gcr.io/my-project/my-image:latest
Error response from daemon: repository gcr.io/my-project/my-image not found: does not exist or no pull access

ドキュメントによると

Compute EngineインスタンスからプライベートDockerイメージをプルするには、インスタンスにイメージのバケットに対する読み取り権限があることを確認してください。インスタンスとイメージバケットが同じGoogle Cloud Platformプロジェクトにある場合、これはデフォルトで正しく構成されています。

4
Sony

このコマンドは、DockerクライアントをGCRに自動的に記録します。

docker-credential-gcr configure-docker

5
Sony

イメージをContainer-Optimized OSにプッシュする場合は、[コンテナイメージをこれにデプロイするVMインスタンス]]をチェックして、レジストリイメージのパスを置くだけです{gcr.io/ COSインスタンスを作成するときに、表示されたフィールドでmy-project/my-image}を参照してください。詳細はこちら here

0
Alioua

Google Cloud Registryからイメージをプルするには、相対gcloudコマンドを使用する必要があります。

標準のDockerコマンドラインツールを使用する場合、Googleの権限やサービスアカウントとは認識されないため、手動で認証を設定する必要があることに注意してください。

gcloud docker -- pull gcr.io/my-project/my-image

関連ドキュメント here を確認できます。

アプリケーションでgcloudコマンドラインツールを使用してGoogle Container Registryを認証できない場合は、docker loginを直接使用して認証できます。これにより、サードパーティの継続的インテグレーションソリューションとContainer Registryでのクラスタ管理テクノロジーを使用できます。詳細は こちら で確認できます。

0
GalloCedrone