Artifact Registry は、コンテナやその他の形式をサポートするユニバーサル パッケージ管理サービスです。アーティファクトの柔軟性と制御を強化するために、Container Registry からの移行について説明します。

イメージの push と pull

イメージの push(アップロード)と pull(ダウンロード)の 2 つは、Container Registry のタスクの中でも最も一般的なものです。

イメージのリスト表示、タグ付け、削除の手順については、イメージの管理をご覧ください。

始める前に

以下の準備を行います。

  1. プロジェクトで Container Registry を有効にしていること

  2. インストールして構成された Docker

  3. イメージを push および pull する権限があることを確認します。

イメージのレジストリへの push

ローカル イメージを Container Registry に push するには、最初にレジストリ名にタグ付けしてからイメージを push する必要があります。

マルチリージョン ホストに push した最初のイメージは、Google Cloud プロジェクトでそのホスト名のストレージ バケットを作成します。

ローカル イメージにレジストリ名でタグ付けする

  1. レジストリ名を指定します。

    1. ホスト名を選択します。ホストによって、イメージを保存する場所が指定されています。

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

      これらの場所は、Cloud Storage ストレージ バケットのマルチリージョンに対応します。イメージを新しいホスト名でレジストリに push すると、Container Registry では、指定されたマルチリージョン内にストレージ バケットを作成します。このバケットは、レジストリの基盤となるストレージです。1 つのプロジェクト内では、ホスト名が同じであるすべてのレジストリが 1 つのストレージ バケットを共有します。

      イメージのホスト名は、Console で [場所] の下に表示されます。

    2. ローカルマシン上のイメージ名とは異なるイメージ名を選択します。

    3. ホスト名、Google Cloud Console プロジェクト ID、イメージ名を結合します。

      HOSTNAME/PROJECT-ID/IMAGE
      

      プロジェクト ID にコロン(:)が含まれている場合は、ドメインをスコープとするプロジェクトをご覧ください。

  2. 次のコマンドを使用して、ローカル イメージにレジストリ名をタグ付けします。

    docker tag SOURCE_IMAGE HOSTNAME/PROJECT-ID/IMAGE
    

    SOURCE_IMAGE はローカル イメージ名またはイメージ ID です。

    このコマンドはイメージにレジストリの名前を付けて、latest タグを適用します。別のタグを適用する場合は、次のコマンドを使用します。

    docker tag SOURCE_IMAGE HOSTNAME/PROJECT-ID/IMAGE:TAG
    

タグ付きイメージを Container Registry に push する

Container Registry で直接認証を行うように Docker を構成するには、Docker 認証ヘルパーを使用するのが最も簡単な方法です。このように構成した後、docker コマンドを使用してイメージのタグ付け、push、pull を行います。別の方法として、クライアント ライブラリを使用してコンテナ イメージを管理することも、Docker API を使用して直接操作することもできます。

次のコマンドを使用して、タグ付きイメージを Container Registry に push します。

docker push HOSTNAME/PROJECT-ID/IMAGE

このコマンドは、latest タグが付けられたイメージを push します。別のタグが付けられたイメージを push する場合は、次のコマンドを使用します。

docker push HOSTNAME/PROJECT-ID/IMAGE:TAG

イメージを新しいホスト名でレジストリに push すると、Container Registry では、指定されたマルチリージョンのロケーションにストレージ バケットを作成します。イメージを push した後、次のことが可能になります。

  • Cloud Console に移動し、レジストリとイメージを表示します。

  • gcloud container images list-tags を実行して、イメージのタグと自動生成されたダイジェストを表示します。

    gcloud container images list-tags HOSTNAME/PROJECT-ID/IMAGE
    

    コマンドの出力は次のようになります。

    DIGEST        TAGS        TIMESTAMP
    44bde...      test        2017-..-..
    

レジストリからイメージを pull する

Container Registry から pull するには、次のコマンドを使用します。

docker pull HOSTNAME/PROJECT-ID/IMAGE:TAG

または

docker pull HOSTNAME/PROJECT-ID/IMAGE@IMAGE_DIGEST

ここで

  • HOSTNAME は、Console で [場所] の下に表示されます。gcr.ious.gcr.ioeu.gcr.ioasia.gcr.io の 4 つのうち、いずれかのオプションになります。
  • HOSTNAME は、Google Cloud Console プロジェクト ID です。プロジェクト ID にコロン(:)が含まれている場合は、ドメインをスコープとするプロジェクトをご覧ください。
  • IMAGE は、Container Registry 内のイメージ名です。
  • TAG はイメージに適用されるタグです。レジストリでは、タグはイメージに固有です。
  • IMAGE_DIGEST は、イメージ コンテンツの sha256 ハッシュ値です。Cloud Console で、メタデータを表示する特定のイメージをクリックします。ダイジェストはイメージのダイジェストとして一覧表示されます。

特定のイメージの pull コマンドを取得するには:

  1. 特定のレジストリに移動するには、イメージの名前をクリックします。

  2. レジストリで、pull するイメージのバージョンの横にあるチェックボックスをオンにします。

  3. ページの上部にある [pull コマンドを表示] をクリックします。

  4. タグやダイジェストを使用してイメージを識別する pull コマンドをコピーします。

次のステップ