Container Registry の概要

Container Registry は、Google Cloud Platform で実行される非公開のコンテナ イメージ レジストリです。Container Registry は、Docker イメージ マニフェスト V2 と OCI イメージをサポートしています。

多くのユーザーは Docker 公開イメージを保存するための中央レジストリとして Dockerhub を使用しますが、イメージへのアクセスを制御するには、Container Registry などの非公開レジストリを使用する必要があります。

セキュアな HTTPS エンドポイントを使用して Container Registry にアクセスできるため、あらゆるシステム、VM インスタンス、所有のハードウェアからイメージを push、pull、管理できます。さらに、Docker 認証ヘルパー コマンドライン ツールを使用して、Docker を Container Registry で直接認証するように構成することもできます。

レジストリ名

Container Registry 内のレジストリは、ホストとプロジェクト ID によって命名されます。イメージを操作(push、pull、delete など)するには、次の形式を使用してイメージを識別します。

[HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG]

または

[HOSTNAME]/[PROJECT-ID]/[IMAGE]@[IMAGE_DIGEST]

ここで

  • [HOSTNAME] は次の 4 つのオプションのいずれかです。

    • gcr.io は現時点では米国でイメージをホストしていますが、今後はロケーションが変更される可能性があります。
    • us.gcr.io は米国でイメージをホストしますが、その場所は、gcr.io によってホストされるイメージからは独立したストレージ バケットです。
    • eu.gcr.io は、欧州連合でイメージをホストします。
    • asia.gcr.io は、アジアでイメージをホストします。

    イメージを新しいホスト名でレジストリに push すると、Container Registry では、指定されたマルチリージョンのロケーションにストレージ バケットを作成します。このバケットは、レジストリの基礎となるストレージです。このロケーションは、お客様の所在地のロケーションではなく、イメージが保存されるロケーションです。1 つのプロジェクト内では、ホスト名が同じであるすべてのレジストリが 1 つのストレージ バケットを共有します。

  • [PROJECT-ID] は Google Cloud Platform Console プロジェクト ID です。プロジェクト ID にコロン(:)が含まれている場合は、以下のドメインをスコープとするプロジェクトをご覧ください。

  • [IMAGE] はイメージの名前です。イメージのローカル名とは別の名前にできます。Google Cloud Platform Console では、プロジェクトのレジストリはイメージ名によって一覧表示されます。各リポジトリでは、名前が同じである複数のイメージを保持できます。たとえば、名前が「quickstart-image」であるイメージの異なるバージョンを保持できます。

  • 末尾に :[TAG] または @[IMAGE_DIGEST] のいずれかを追加すると、イメージの特定のバージョンを区別できますが、この使用法もオプションです。タグまたはダイジェストを指定しないと、Container Registry はデフォルトタグ latest が含まれるイメージを検索します。以下のレジストリ内のイメージのバージョンをご覧ください。

たとえば、クイックスタートでは、クイックスタート イメージのレジストリは gcr.io/[PROJECT-ID] です。イメージを push および pull するには次の形式を使用します。

gcr.io/[PROJECT-ID]/quickstart-image:tag1

[PROJECT-ID] は Google Cloud Platform Console プロジェクト ID です。

レジストリ内のイメージのバージョン

1 つのレジストリには多くのイメージを含めることができ、それらはバージョンの異なる場合があります。レジストリ内で特定のバージョンのイメージを識別するには、イメージのタグまたはダイジェストを指定します。タグは、あるレジストリ内の 1 つのイメージに固有です。ダイジェストは自動的に生成され、あるイメージのあるバージョンに固有で、@[IMAGE_DIGEST] という形式を取ります。[IMAGE_DIGEST] の部分はイメージ コンテンツの SHA256 ハッシュ値です。

たとえば、クイックスタートで特定のバージョンのイメージを識別するには:

  • イメージのタグを追加します。

    gcr.io/[PROJECT-ID]/quickstart-image:tag1
    
  • または、イメージのダイジェストを追加します。

    gcr.io/[PROJECT-ID]/quickstart-image@sha256:4d11e24ba8a615cc85a535daa17b47d3c0219f7eeb2b8208896704ad7f88ae2d
    

[PROJECT-ID] は Google Cloud Platform Console プロジェクト ID です。プロジェクト ID にコロン(:)が含まれている場合は、以下のドメインをスコープとするプロジェクトをご覧ください。

コンソールの [イメージ] 画面で、[タグ] 列にイメージのタグが一覧表示されます。イメージのバージョンをクリックすると、メタデータ(イメージ ダイジェストを含む)が表示されます。

タグの変更方法については、イメージにタグを付けるをご覧ください。

ドメインをスコープとするプロジェクト

プロジェクトのスコープがドメインの場合、プロジェクト ID のドメイン名の後にコロン(:)が続きます。Docker でのコロンの処理方法の関係で、Container Registry でイメージ ダイジェストを指定する場合は、コロンをスラッシュに置き換える必要があります。このようなプロジェクトのイメージを指定する場合は、次の形式を使用します。

[HOSTNAME]/[DOMAIN]/[PROJECT]/[IMAGE]

たとえば、ID が example.com:my-project のプロジェクトの場合、次のようになります。

gcr.io/example.com/my-project/image-name

URL としてのレジストリ名

URL https://[HOSTNAME]/[PROJECT-ID]/[IMAGE] は、GCP Console におけるそのレジストリの URL です。これらのリンクには、レジストリへのアクセス権限を持つ認証済みのユーザーがアクセスできます。レジストリ名の作成方法については、上記の説明をご覧ください。

たとえば、次の URL は GCP Console の一般公開レジストリにリンクしています。

Container のイメージ形式

Container Registry は、Docker イメージ マニフェスト V2 と OCI イメージをサポートしています。

詳細については、Container のイメージ形式をご覧ください。

アクセス制御

Container Registry は自身と同じプロジェクト内の Cloud Storage バケットにコンテナ イメージのタグとレイヤファイルを格納します。バケットへのアクセスは、Cloud Storage の Identity and Access Management(IAM)で構成します。

デフォルトでは、プロジェクトのオーナーと編集者にプロジェクトの Container Registry バケットに対する push および pull 権限が付与されます。プロジェクト閲覧者にはイメージの pull 権限のみが付与されます。

詳細については、アクセス制御の構成をご覧ください。

Cloud Storage から高性能なバックエンド データベースへのイメージ メタデータの移動計画については、Container Registry 非推奨のお知らせをご覧ください。

認証

gcloud docker -a コマンドを使用することで、GCP 認証情報による Docker 認証を構成できます。Container Registry では、アクセス トークンまたは JSON キーファイルに基づく高度な認証方式をサポートしています。

Docker 認証ヘルパー

Docker は、イメージを push および pull するために Container Registry にアクセスする必要があります。Docker 認証ヘルパー コマンドライン ツールを使用して、Docker で使用するための Container Registry 認証情報を構成できます。

認証ヘルパーは、Container Registry 認証情報を自動的に、または --token-source フラグで指定したロケーションからフェッチし、それらを Docker の構成ファイルに書き込みます。この方法で、Docker のコマンドライン ツール docker を使用して Container Registry を直接操作できます。

詳細については、高度な認証をご覧ください。

Container Registry サービス アカウント

Container Registry API を有効にすると、Container Registry はプロジェクトにサービス アカウントを追加します。このサービス アカウントの名前は次の形式です。

service-[PROJECT_NUMBER]@containerregistry.iam.gserviceaccount.com

Container Registry サービス アカウントは、プロジェクトでサービスに関して必要な処理を実行するための Container Registry 専用のサービス アカウントです。このアカウントを所有しているのは Google ですが、プロジェクトに固有であり、GCP Console のサービス アカウントと IAM のセクションに表示されます。

このサービス アカウントを削除したり、その権限を変更したりすると、Container Registry の一部の機能は正常に動作しなくなります。役割を変更したり、アカウントを削除したりしないでください。

ミラー

mirror.gcr.io レジストリは、Docker Hub の公式リポジトリのグローバル Container Registry ミラーです。

ミラーにより、Docker Hub リポジトリの pull を高速化できます。mirror.gcr.io を使用すると、クライアントは最初に Container Registry ミラーから Docker Hub 公式イメージを pull しようとします。

詳細については、Container Registry と Docker Hub ミラーの使用をご覧ください。

通知

Cloud Pub/Sub を使用すると、コンテナ イメージの変更通知を取得できます。

詳細については、Cloud Pub/Sub 通知の構成をご覧ください。

GCP での Container Registry の使用

Compute Engine インスタンスと Google Kubernetes Engine クラスタは、インスタンスの Cloud Storage スコープに基づいて Container Registry イメージの push と pull を行います。GCP での Container Registry の使用をご覧ください。

Container Registry に格納されているイメージは、App Engine フレキシブル環境にデプロイできます。

継続的デリバリー ツールの統合

Container Registry は、広く使用されているいくつかの継続的デリバリー システムと連動します。

サードパーティ ソリューションでの Container の使用

アプリケーションの開発時に、GCP 外のサードパーティのクラスタ管理ソリューションや継続的インテグレーション ソリューションなどを使用できます。Container Registry は、これらの外部サービスと統合できます。

これらのソリューションは、認証用の gcloud コマンドライン ツールへのアクセスを提供しない可能性があります。そのような場合は、docker login を使用して Container Registry に対して直接認証できます。詳細については、高度な認証をご覧ください。

一部のサードパーティ ソリューション(Kubernetes など)では、Container Registry との統合のためのドキュメントが提供されています。

Container Registry と統合可能なサードパーティ ソリューションの完全なリストについては、継続的デリバリー ツールの統合をご覧ください。

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...