イメージの管理

イメージの管理には、リポジトリ内のイメージの一覧表示、タグの追加、タグの削除、新しいリポジトリへのイメージのコピー、イメージの削除が含まれます。

ローカルイメージを Container Registry に push する方法、または Container Registry に保存されているイメージを pull する方法については、イメージの push と pull をご覧ください。

始める前に

次のことを確認してください。

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

  2. Docker をインストールしておくこと

  3. レジストリに対する認証を行うように Docker を構成済みであること。

  4. レジストリにアクセスするための権限を付与されていること。

ストレージの場所ごとのイメージの一覧表示

特定のホストの場所にあるイメージを一覧表示するには、Google Cloud Console またはコマンドラインを使用できます。

Console

いずれかのホストの場所にイメージを表示するには:

  1. [Container Registry] ページに移動

    Container Registry ページを開く

  2. [名前] の上のセレクタを使用して、ホストの場所を選択します。オプションには、[すべての場所]、プロジェクトで現在使用しているホストの名前(gcr.ious.gcr.ioeu.gcr.ioasia.gcr.io)があります。

gcloud

いずれかのホストの場所にあるイメージを一覧表示するには、次のコマンドを使用します。

gcloud container images list --repository=[HOSTNAME]/[PROJECT-ID]

ここで

  • [HOSTNAME] は、Console で Location の下に表示されます。gcr.ious.gcr.ioeu.gcr.ioasia.gcr.io の 4 つのうち、いずれかのオプションになります。
  • [PROJECT-ID] は、Google Cloud Console プロジェクト ID です。プロジェクト ID にコロン(:)が含まれている場合は、ドメインをスコープとするプロジェクトをご覧ください。

ネストされたレジストリがある場合、ネストされたイメージを一覧表示するには、格納されているリポジトリ レベルを指定します。

gcloud container images list --repository=[HOSTNAME]/[PROJECT-ID]/[IMAGE]

ここで、[IMAGE] は、さらに多くのイメージがネストされているリポジトリです。

gcloud container images list のドキュメントも参照してください。

イメージのバージョンの一覧表示

レジストリにはさまざまなバージョンのイメージが含まれている可能性があります。こうしたバージョンには同じイメージ名があり、ダイジェストとタグで識別されます。

Console

イメージのダイジェストとタグを表示するには:

  1. [Container Registry] ページに移動

    Container Registry ページを開く

  2. イメージ名をクリックすると、そのイメージのバージョンが表示されます。切り捨てられたダイジェストは [名前] に一覧表示され、タグは [タグ] の下に一覧表示されます。

  3. 完全なダイジェストを取得するには、イメージのバージョンをクリックしてそのメタデータを表示します。ダイジェストはイメージのダイジェストと呼ばれます。

gcloud

イメージの切り捨てられたダイジェストとタグを表示するには、次のコマンドを実行します。

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

ここで

  • [HOSTNAME] は、Console で Location の下に表示されます。gcr.ious.gcr.ioeu.gcr.ioasia.gcr.io の 4 つのうち、いずれかのオプションになります。
  • [PROJECT-ID] は、Google Cloud Console プロジェクト ID です。プロジェクト ID にコロン(:)が含まれている場合は、ドメインをスコープとするプロジェクトをご覧ください。
  • [IMAGE] は、Container Registry 内のイメージ名です。

特定のイメージの完全なダイジェストを一覧表示するには、次のコマンドを実行します。

gcloud container images list-tags --format='get(digest)' [HOSTNAME]/[PROJECT-ID]/[IMAGE]

gcloud container images list-tags のドキュメントをご覧ください。

イメージにタグを付ける

イメージにタグを追加するには、Google Cloud Console またはコマンドラインを使用できます。

ダイジェストは、イメージのバージョンに自動的に生成される一意の識別子です。タグは、イメージの特定のバージョンに適用できるラベルとして機能します。

1 つのイメージに複数のタグを追加できます。リポジトリ内で、イメージの各タグは一意である必要があります。たとえば、タグ release-candidate をイメージの 9 番目のバージョンに追加した場合、同じタグを 10 番目のバージョンに追加すると、9 番目のバージョンから 10 番目のバージョンにタグが移動します。

イメージにタグ付けしない場合、Docker クライアントはデフォルトのタグ latest を追加します。つまり、latest はイメージの最新バージョンを示すわけではありません。そうではなく、latest として明示的にタグ付けしたイメージのバージョン、またはイメージのタグ付けされていない最新のバージョンを意味します。latest の意味が不明瞭なため、latest タグには依存しないことをおすすめします。

Console

Container Registry でホストされているイメージにタグを付けるには:

  1. [Container Registry] ページに移動

    Container Registry ページを開く

  2. イメージ名をクリックすると、そのイメージのバージョンが表示されます。

  3. [タグ] で、編集アイコンをクリックします。

  4. フィールドに新しいタグを入力し、[保存] をクリックします。

gcloud

Container Registry でホストされるイメージにタグを付けるには、gcloud container images add-tag コマンドを使用します。

gcloud container images add-tag \
[HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG] \
[HOSTNAME]/[PROJECT-ID]/[IMAGE]:[NEW_TAG]

または

gcloud container images add-tag \
[HOSTNAME]/[PROJECT-ID]/[IMAGE]@[IMAGE_DIGEST] \
[HOSTNAME]/[PROJECT-ID]/[IMAGE]:[NEW_TAG]

ここで

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

このコマンドの詳細については、gcloud container images add-tag をご覧ください。

ローカル イメージに Container Registry でホストするためのタグを付ける

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

イメージのタグを外す

Container Registry 内のイメージからタグを削除するには、Google Cloud Console またはコマンドラインを使用できます。

Console

  1. [Container Registry] ページに移動

    Container Registry ページを開く

  2. イメージ名をクリックすると、そのイメージのバージョンが表示されます。

  3. [タグ] で、編集アイコンをクリックします。

  4. タグを削除して [保存] をクリックします。

gcloud

イメージからタグを削除するには、次のコマンドを使用します。

gcloud container images untag [HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG]

ここで

  • [HOSTNAME] は、Console で Location の下に表示されます。gcr.ious.gcr.ioeu.gcr.ioasia.gcr.io の 4 つのうち、いずれかのオプションになります。
  • [PROJECT-ID] は、Google Cloud Console プロジェクト ID です。プロジェクト ID にコロン(:)が含まれている場合は、ドメインをスコープとするプロジェクトをご覧ください。
  • [IMAGE] は、Container Registry 内のイメージ名です。
  • [TAG] は削除するタグです。

    このコマンドの詳細については、gcloud container images untag をご覧ください。

イメージを新しいレジストリにコピーする

コマンドラインを使用して、1 つのリポジトリから別のリポジトリにイメージをコピーできます。その際、両方のリポジトリにアクセスできる必要があります。

1 つのリポジトリから別のリポジトリにイメージをコピーするには、gcloud container images add-tag コマンドを使用しています。その際、移動するイメージをタグで特定します。

gcloud container images add-tag \
[SOURCE_HOSTNAME]/[SOURCE_PROJECT-ID]/[SOURCE_IMAGE]:[SOURCE_TAG] \
[DESTINATION_HOSTNAME]/[DESTINATION_PROJECT-ID]/[DESTINATION_IMAGE]:[DESTINATION_TAG]

またはダイジェストによって移動するイメージを指定します。

gcloud container images add-tag \
[SOURCE_HOSTNAME]/[SOURCE_PROJECT-ID]/[SOURCE_IMAGE]@[IMAGE_DIGEST] \
[DESTINATION_HOSTNAME]/[DESTINATION_PROJECT-ID]/[DESTINATION_IMAGE]:[DESTINATION_TAG]

ここで、移動元と移動先の両方で

  • [HOSTNAME] は、イメージがホストされている場所です。gcr.ious.gcr.ioeu.gcr.ioasia.gcr.io の 4 つのうち、いずれかのオプションになります。
  • [PROJECT-ID] は、Google Cloud Console プロジェクト ID です。プロジェクト ID にコロン(:)が含まれている場合は、ドメインをスコープとするプロジェクトをご覧ください。
  • [IMAGE] は、Container Registry 内のイメージ名です。
  • [IMAGE_DIGEST] は、イメージ コンテンツの sha256 ハッシュ値です。
  • [TAG] は、移動するソースイメージを識別するタグ、または移動先リポジトリのイメージに適用するタグです。

たとえば、my-image イメージを別のプロジェクトのリポジトリとヨーロッパのホストにコピーするものの、同じイメージ名とタグを保持する場合は、以下のコマンドを使用します。

gcloud container images add-tag \
gcr.io/[PROJECT-ID]/my-image:tag1 \
eu.gcr.io/[OTHER-PROJECT-ID]/my-image:tag1

[PROJECT-ID][OTHER-PROJECT-ID] は、それぞれコピー元プロジェクト、コピー先プロジェクトの Google Cloud Console プロジェクト ID です。こうしたプロジェクトの両方のリポジトリにアクセスできる必要があります。プロジェクト ID のいずれかにコロン(:)が含まれている場合は、ドメインをスコープとするプロジェクトをご覧ください。

このコマンドの詳細については、gcloud container images add-tag をご覧ください。

イメージの削除

イメージを削除するには、Google Cloud Console またはコマンドラインを使用できます。削除したイメージを元に戻すことはできません。

未使用のイメージの管理に役立つその他のツールもあります。たとえば、gcr-cleaner ツールは、さまざまな基準に基き、古いイメージを見つけて削除します。未使用のイメージを削除すると、ストレージ コストを削減できます。gcr-cleaner ツールは Google の公式プロダクトではありません。

Google Cloud Console または gcloud CLI からイメージを削除するには:

Console

  1. [Container Registry] ページに移動

    Container Registry ページを開く

  2. イメージ名をクリックすると、そのイメージのバージョンが表示されます。

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

  4. ページの上部にある [削除] をクリックします。

  5. [リポジトリ アイテムの削除] ポップアップで、[削除] をクリックします。

gcloud

次のいずれかのコマンドを実行します。

  • ダイジェストによって識別されるイメージ:

    gcloud container images delete [HOSTNAME]/[PROJECT-ID]/[IMAGE]@[IMAGE_DIGEST]
    
  • タグによって識別されたイメージ。複数のタグがあります:

    gcloud container images delete [HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG] --force-delete-tags
    

ここで

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

このコマンド詳細については、gcloud container images delete をご覧ください。

次のステップ