Container Registry からの移行

Container Registry は非推奨で、提供終了となります。2024 年 5 月 15 日以降、Artifact Registry は、Container Registry の使用歴がない Google Cloud プロジェクトで gcr.io ドメインのイメージをホストします。2025 年 3 月 18 日以降、Container Registry は提供終了となります。

非推奨と廃止のタイムラインの詳細については、Container Registry の非推奨Container Registry の廃止に備えるをご覧ください。

Artifact Registry は、Google Cloud でコンテナ イメージのストレージと管理を行うための推奨サービスです。Artifact Registry には Container Registry と同じコンテナ管理機能があり、追加の機能と利点があります。Artifact Registry は、コンテナ イメージとコンテナ以外のアーティファクトの両方をサポートするフルマネージド サービスであり、Container Registry の機能を拡張します。

自動移行ツールを使用すると、ダウンタイムやサービスの停止なしで、Container Registry エンドポイントを Artifact Registry gcr.io リポジトリに移行できます。

新機能の概要

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

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

mirror.gcr.io 上のキャッシュされた Docker Hub のイメージ

Artifact Registry は、頻繁にアクセスされる公開 Docker Hub イメージを mirror.gcr.io でキャッシュに保存します。mirror.gcr.io の使用の詳細については、キャッシュに保存された Docker Hub イメージの pull をご覧ください。

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

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

Artifact Registry の gcr.io リポジトリ

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

次の場合は gcr.io リポジトリを使用します。

  • 既存のイメージと自動化を Artifact Registry に移行するために必要なセットアップと構成の量を最小限に抑えたい。
  • 別の Google Cloud プロジェクトまたはリージョンに Artifact Registry リポジトリを設定する必要はありません。
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 リージョンに開発用リポジトリと本番環境リポジトリを設定し、デベロッパーに異なるレベルのアクセス権を付与できます。
  • 複数のアップストリーム標準リポジトリからダウンロードするための単一のエンドポイントとして機能する仮想リポジトリを作成します。

  • リモート リポジトリを使用して外部ソースのプロキシとして機能させる。

標準リポジトリ、リモート リポジトリ、仮想リポジトリ、gcr.io リポジトリは共存できます。たとえば、Artifact Registry に gcr.io リポジトリを作成して、既存の Container Registry の設定を移行し、新しい作業用の標準リポジトリを作成できます。

移行ツールを使用する

次のツールを使用して、Container Registry を使用しているプロジェクトを確認し、Container Registry から Artifact Registry へのイメージのコピー、Container Registry から Artifact Registry への複数のプロジェクトの自動移行を行います。

機能の比較

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

機能 Container Registry Artifact Registry
サポートされているファイル形式 コンテナ イメージのみ コンテナ イメージ、言語パッケージ、OS パッケージなど、複数のアーティファクトformats
ドメイン名 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 CLI と API コマンドを使用する gcloud container images コマンドを使用します。コマンドは、短縮されたダイジェストをサポートします。完全なダイジェスト文字列を指定しなかった場合、Container Registry は部分文字列に基づいて正しいイメージを探そうとします。

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

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

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

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 でホストされるようになりました。 これで mirror.gcr.io が Artifact Registry でホストされるようになりました。VPC Service Controls 境界で mirror.gcr.io を使用している場合を除き、対応は必要ありません。VPC Service Controls の境界での mirror.gcr.io の使用について詳しくは、VPC Service Controls で Artifact Registry を使用するをご覧ください。
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 ソースのデプロイ 使用不可 ソースのデプロイでは、1 つの 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 repositories create
リポジトリを削除する 該当なし gcloud artifacts repositories delete
イメージの一覧取得 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 images list --include-tags