Container Registry からの移行

2023 年 5 月 15 日より、Container Registry は非推奨になっています。現在 Container Registry を使用している場合は、Artifact Registry に移行できます。

Artifact Registry は、Google Cloud でのコンテナ イメージの保存と管理に推奨されるサービスです。Artifact Registry は Container Registry と同じコンテナ管理機能を備えており、その他の機能と利点があります。コンテナ イメージとコンテナ以外のアーティファクトの両方をサポートするフルマネージド サービスとして、Artifact Registry は Container Registry の機能を拡張します。

新機能の概要

Artifact Registry は、次の機能を使用して Container Registry の機能を拡張します。

これらの機能の詳細については、機能の比較をご覧ください。

下位互換性と共存

同じプロジェクトで Artifact Registry と Container Registry の両方を使用できます。gcloud または Google Cloud コンソールでリポジトリのリストを表示すると、Artifact Registry には同じプロジェクト内の Container Registry リポジトリも表示されます。

移行オプションを選択する

Artifact Registry への移行に使用できるリポジトリには、次の 2 種類があります。

gcr.io ドメインをサポートするリポジトリ

Container Registry の gcr.io ホスト名にマッピングされた特殊なリポジトリ。Artifact Registry では、Container Registry ホストに対する gcr.io リクエストを、同じ Google Cloud プロジェクト内の対応する Artifact Registry リポジトリにリダイレクトできます。

このオプションは、次の場合に使用します。

  • 既存のイメージと自動化を Artifact Registry に移行するために必要な設定と構成の量を最小限に抑える場合。
  • 別の Google Cloud プロジェクトまたはリージョンで Artifact Registry リポジトリを設定する必要はありません。
標準リポジトリ

すべての機能をサポートし、既存の Container Registry ホストから完全に独立している、通常の Artifact Registry リポジトリ。

次の場合は、代わりに標準リポジトリを使用してください。

  • 特定のリージョンにデータを保存するコンプライアンス要件がある。gcr.io ドメインをサポートするリポジトリは、Container Registry ホストと同じマルチリージョン(asiaeuus)でのみ使用できます。
  • Container Registry を使用しているプロジェクトとは異なるプロジェクトで Artifact Registry リポジトリを設定する必要がある。
  • 画像を保存する方法と場所を再設計するとします。次に例を示します。

    • Cloud Run や Google Kubernetes Engine などのランタイムを含む、他の Google Cloud リージョン リソースと同じリージョンにリポジトリを作成する。
    • チームにより近いリージョンにリポジトリを設定する。たとえば、asia マルチリージョンの代わりにオーストラリア リージョン、または us マルチリージョンではなく南アメリカ リージョンにリポジトリを作成できます。
    • 異なる Identity and Access Management ポリシーを使用して、同じプロジェクトとロケーションに複数の Docker リポジトリを作成します。たとえば、us-east1 リージョンに開発リポジトリと本番環境リポジトリを設定し、デベロッパーごとに異なるアクセスレベルを設定できます。
  • 複数のアップストリーム標準リポジトリからのダウンロード用の単一のエンドポイントとして機能する仮想リポジトリを作成します。

両方のタイプのリポジトリが共存できます。たとえば、Artifact Registry で gcr.io リポジトリを作成して、既存の Container Registry の設定を移行し、新しい作業用に標準リポジトリを作成できます。

機能の比較

次の表に、Container Registry と Artifact Registry の違いの概要を示します。

特徴 Container Registry Artifact Registry
サポートされているファイル形式 コンテナ イメージのみ コンテナ イメージ、言語パッケージ、OS パッケージなど、複数のアーティファクト形式
ドメイン名 gcr.io pkg.dev

gcr.io ドメイン サポートを設定している場合は、Artifact Registry で gcr.io ドメインのイメージを保存することもできます。

リポジトリ モード 該当なし
  • 標準: アーティファクトを保存します。
  • リモート: アップストリーム ソース(Docker Hub など)からリクエストされたアーティファクトをキャッシュに保存します。
  • 仮想: 単一のエンドポイント、複数のアップストリーム リポジトリ。
レジストリの作成 レジストリ ホストを作成するには、最初のイメージを push します。

Container Registry は、Google Cloud プロジェクトの Cloud Storage バケットにイメージを保存します。レジストリ固有の権限を付与するなどのアクションは、バケットに直接適用する必要があります。

リポジトリの作成は、push と pull とは別のオペレーションです。これにより、リポジトリの管理とリポジトリの使用を明確に分離できます。
  • 下位互換性を確保するために、gcr.io ドメイン サポートを設定できます。初期設定には、プロジェクト内の各 Container Registry ホストに対する Artifact Registry リポジトリの自動作成と、対応する Artifact Registry リポジトリへの gcr.io のリダイレクトが含まれます。
  • pkg.dev ドメインへのすべての push と pull のリクエストでは、リポジトリがすでに存在している必要があります。

Artifact Registry には、Google Cloud プロジェクトで管理する Cloud Storage バケットはありません。リポジトリに対してイメージ管理アクションを直接実行します。

レジストリの場所 Google Cloud プロジェクトで使用できるマルチリージョン レジストリのホストは 4 つのみです。 リージョンまたはマルチリージョンに複数の個別に制御されたリポジトリを作成します。
アクセス制御
  • Cloud Storage のロールを使用してアクセス権を付与します。
  • マルチリージョンに保存されているすべてのイメージへのアクセスを制限できますが、個々のリポジトリへのアクセスを制限することはできません。たとえば、プロジェクト my-project 内の us.gcr.io へのアクセスを制限できますが、us.gcr.io/my-project/team1us.gcr.io/my-project/team2 の配下に存在するイメージに対する特定の権限を付与することはできません。
  • Artifact Registry のロールを使用してアクセス権を付与します。
  • 個々のリポジトリに対するアクセスを制限できます。たとえば、us-docker.pkg.dev/my-project/team1us-docker.pkg.dev/my-project/team2 でイメージへのアクセスを個別に制御できます。
  • IAM とリポジトリのタグによる条件付きアクセス権を付与する
Authentication サードパーティのクライアントがイメージを push および pull するための複数の認証方法を提供します。 Artifact Registry は、Container Registry と同じ認証方法をサポートしています。詳細については、Docker の認証の設定をご覧ください。
顧客管理の暗号鍵(CMEK) CMEK を使用して、イメージを含むストレージ バケットを暗号化します。 CMEK を使用して、個々のリポジトリを暗号化します。
Google Cloud コンソールの使用 Google Cloud コンソールの [Container Registry] セクションで、Container Registry イメージを表示して管理します。 Google Cloud コンソールの [Artifact Registry] セクションで、Artifact Registry リポジトリと Container Registry リポジトリのリストを表示します。このページから Artifact Registry リポジトリとイメージを管理します。

Container Registry リポジトリをクリックすると、Google Cloud コンソールの [Container Registry] セクションのイメージのリストに誘導されます。

gcloud と API コマンドを使用する。 gcloud container images コマンドを使用します。コマンドは、短縮されたダイジェストをサポートします。完全なダイジェスト文字列を指定しなかった場合、Container Registry は部分文字列に基づいて正しいイメージを探そうとします。

Container Registry 用の REST または RPC API はありません。

gcloud artifacts docker コマンドを使用する。 コマンドは短縮ダイジェストをサポートしていません。

Container Registry と Artifact Registry の gcloud コマンドの比較については、gcloud コマンドの比較をご覧ください。

Artifact Registry には、リポジトリとアーティファクトを管理するための REST API と RPC API が用意されています。

Pub/Sub 通知 gcr トピックへの変更を公開します。 gcr トピックへの変更を公開します。既存の Container Registry サービスと同じプロジェクトにリポジトリを作成すると、既存の Pub/Sub 構成が自動的に機能します。

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

監査ロギング Container Registry は、レジストリ アクティビティ用の監査ログを提供していません。 Cloud Logging を使用して、リポジトリに対する変更を追跡します。
キャッシュされた Docker Hub のイメージ mirror.gcr.io は、すべてのユーザーによって最も頻繁にリクエストされる Docker Hub イメージを保存する pull スルー キャッシュです。 mirror.gcr.io は、Artifact Registry でホストされるように移行が進行中です。移行の詳細については、リリースノートをご覧ください。 コンシューマがリクエストした Docker Hub イメージをキャッシュに保存するように、リモート リポジトリを設定します。Artifact Analysis を使用して、リモート リポジトリ内のイメージをスキャンして脆弱性を見つけることもできます。
VPC Service Controls サービス境界に Container Registry を追加できます。 サービス境界に Artifact Registry を追加できます。
Artifact Analysis を使用したメタデータの保存と分析 サポートされている OS のイメージのオンデマンド スキャンで、OS と言語パッケージの脆弱性をスキャンします。自動スキャンでは、OS の脆弱性情報のみが返されます。 スキャンの種類について学習します
オンデマンド スキャン
自動スキャン
オンデマンド スキャンと自動スキャンの両方を使用して、OS と言語パッケージの脆弱性をスキャンします。 スキャンの種類について学習します
オンデマンド スキャン
自動スキャン
  • Google Cloud CLI の gcloud artifacts docker images コマンドには、脆弱性やその他のメタデータを含むスキャン結果を表示するためのフラグが含まれています。
  • スキャンを実行すると、サポートされているオペレーティング システムでの Artifact Registry のイメージの OS 脆弱性情報と、サポートされているオペレーティング システムとサポートされていないオペレーティング システムの両方の言語パッケージの脆弱性情報が返されます。
イメージ ストリーミング 使用不可 Artifact Registry のイメージを GKE または Dataproc Serverless にストリーミングして、自動スケーリングの高速化、Pod の起動の高速化、大規模なイメージを pull する際のレイテンシの短縮を実現します。
Cloud Run ソースのデプロイ 使用不可 ソースデプロイでは、単一の gcloud CLI コマンドを使用して、ソースコードからコンテナ イメージをビルドし、Artifact Registry にイメージを保存して Cloud Run にデプロイできます。
料金 Container Registry の料金は、ストレージと外向きネットワークを含む Cloud Storage の使用量に基づいています。 レジストリ ホストはマルチリージョンでのみ使用できるため、下り(外向き)のコストには Google Cloud へのイメージのデプロイが含まれます。 Artifact Registry では、ストレージと外向きネットワークに基づいて独自の料金が設定されています。
割り当て Container Registry には一定のリクエスト上限があります。Cloud Storage の割り当ても適用されます。詳細については、割り当てと上限のドキュメントをご覧ください。 Artifact Registry には、プロジェクトごと、およびユーザーごとの割り当てがあります。デフォルトでは、ユーザーごとの割り当てに上限はありませんが、1 人のユーザーがプロジェクト レベルの割り当てを過剰に消費しないように、ユーザーごとの上限を構成できます。

gcloud コマンドの比較

次の表に、gcloud CLI の Container Registry コマンドと同等の Artifact Registry コマンドの概要を示します。表内のリンクをクリックすると、コマンドのリファレンス ページが表示されます。

この表には、Container Registry に同等のコマンドが存在しない、使用可能な Artifact Registry コマンドがすべて記載されているわけではありません。すべての Artifact Registry コマンド リファレンスについては、gcloud artifacts のドキュメントをご覧ください。

オペレーション Container Registry Artifact Registry
リポジトリを作成する なし gcloud artifacts リポジトリの作成
リポジトリを削除する 該当なし gcloud artifacts リポジトリの削除
イメージの一覧取得 gcloud container images list gcloud artifacts docker images list
タグの一覧表示 gcloud container images list-tags gcloud artifacts docker tags list
タグを追加 gcloud container images add-tag gcloud artifacts docker tags add
タグを削除する gcloud container images untag gcloud artifacts docker tags delete
イメージの説明を入力 gcloud container images describe gcloud artifacts docker image list --include-tags