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プロジェクトにある場合、これはデフォルトで正しく構成されています。
このコマンドは、DockerクライアントをGCRに自動的に記録します。
docker-credential-gcr configure-docker
イメージをContainer-Optimized OSにプッシュする場合は、[コンテナイメージをこれにデプロイするVMインスタンス]]をチェックして、レジストリイメージのパスを置くだけです{gcr.io/ COSインスタンスを作成するときに、表示されたフィールドでmy-project/my-image}を参照してください。詳細はこちら here
Google Cloud Registryからイメージをプルするには、相対gcloud
コマンドを使用する必要があります。
標準のDockerコマンドラインツールを使用する場合、Googleの権限やサービスアカウントとは認識されないため、手動で認証を設定する必要があることに注意してください。
gcloud docker -- pull gcr.io/my-project/my-image
関連ドキュメント here を確認できます。
アプリケーションでgcloud
コマンドラインツールを使用してGoogle Container Registryを認証できない場合は、docker login
を直接使用して認証できます。これにより、サードパーティの継続的インテグレーションソリューションとContainer Registryでのクラスタ管理テクノロジーを使用できます。詳細は こちら で確認できます。