イメージの管理

このページでは、Docker リポジトリでコンテナ イメージを管理する方法について説明します。イメージの管理には、リポジトリ内のイメージの一覧表示、タグの追加、タグの削除、新しいリポジトリへのイメージのコピー、イメージの削除が含まれます。

イメージの push と pull の詳細については、イメージの push と pull をご覧ください。

始める前に

  1. ターゲット リポジトリが存在しない場合は、新しいリポジトリを作成します
  2. リポジトリに必要な権限が付与されていることを確認します。
  3. (省略可)gcloud コマンドのデフォルトを構成します。

必要なロール

イメージの管理に必要な権限を取得するには、リポジトリに対する次の IAM ロールの付与を管理者に依頼してください。

ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

イメージのリストを表示する

リポジトリ モード: 標準、リモート

イメージは、Google Cloud Console か gcloud CLI を使用して一覧表示できます。

リポジトリ リストには、Artifact Registry と Container Registry の両方のリポジトリが含まれます。Container Registry リポジトリ内のイメージを操作するには、Container Registry のドキュメントでイメージの管理をご覧ください。

コンソール

リポジトリ内のイメージを表示するには:

  1. Google Cloud コンソールで [リポジトリ] ページを開きます。

    [リポジトリ] ページを開く

  2. コンテナ イメージのあるリポジトリをクリックします。

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

gcloud

デフォルト値が構成されている場合にデフォルトのプロジェクト、リポジトリ、ロケーションのすべてのイメージを一覧表示するには次のようにします。

gcloud artifacts docker images list

特定の場所にあるリポジトリ内のイメージを一覧表示するには、次のコマンドを実行します。

gcloud artifacts docker images list LOCATION-docker.pkg.dev/PROJECT/REPOSITORY

特定のイメージのすべてのダイジェストとタグを一覧表示するには、次のコマンドを実行します。

gcloud artifacts docker images list LOCATION-docker.pkg.dev/PROJECT/REPOSITORY/IMAGE \
--include-tags

次の値を置き換えます。

  • LOCATION は、リポジトリのリージョンまたはマルチリージョンのロケーションです。
  • PROJECT は、Google Cloud プロジェクト ID です。プロジェクト ID にコロン(:)が含まれている場合は、ドメインをスコープとするプロジェクトをご覧ください。
  • REPOSITORY は、イメージが保存されるリポジトリの名前です。
  • IMAGE は、リポジトリ内のイメージの名前です。
  • --include-tags は、ダイジェストとタグを含む、イメージのすべてのバージョンを表示します。このフラグを省略すると、返されるリストには最上位のコンテナ イメージのみが含まれます。

たとえば、次のような特性を持つイメージについて考えてみましょう。

  • リポジトリの場所: us-west1
  • リポジトリ名: my-repo
  • プロジェクト ID: my-project
  • イメージ名: my-image

完全な URL は次の通りです。

us-west1-docker.pkg.dev/my-project/my-repo

完全なイメージ名は次のとおりです。

us-west1-docker.pkg.dev/my-project/my-repo/my-image

イメージ名の形式の詳細については、リポジトリとイメージ名をご覧ください。

ファイルのリスティング

リポジトリ モード: 標準、リモート

リポジトリ内のファイル、指定したコンテナ イメージのすべてのバージョン内のファイル、またはイメージの特定のバージョン内のファイルを一覧表示できます。

次のすべてのコマンドについては、コマンドに --limit フラグを追加することで、返されるファイルの最大数を設定できます。

デフォルト値が構成されている場合にデフォルトのプロジェクト、リポジトリ、ロケーションのすべてのファイルを一覧表示するには次のようにします。

gcloud artifacts files list

指定したプロジェクト、リポジトリ、ロケーション内のファイルを一覧表示するには、次のコマンドを実行します。

gcloud artifacts files list \
    --project=PROJECT \
    --repository=REPOSITORY \
    --location=LOCATION

特定のコンテナ イメージのすべてのバージョンのファイルを一覧表示するには:

gcloud artifacts files list \
    --project=PROJECT \
    --repository=REPOSITORY \
    --location=LOCATION \
    --package=PACKAGE

特定のコンテナ イメージ バージョンのファイルを一覧表示するには:

gcloud artifacts files list \
    --project=PROJECT \
    --repository=REPOSITORY \
    --location=LOCATION \
    --package=PACKAGE \
    --version=VERSION
特定のタグのファイルを一覧表示するには:

gcloud artifacts files list \
    --project=PROJECT \
    --repository=REPOSITORY \
    --location=LOCATION \
    --package=PACKAGE \
    --tag=TAG

次の値を置き換えます。

  • LOCATION: リポジトリのリージョンまたはマルチリージョンのロケーション
  • PROJECT: Google Cloud プロジェクト ID。プロジェクト ID にコロン(:)が含まれている場合は、ドメインをスコープとするプロジェクトをご覧ください。
  • REPOSITORY: イメージが保存されるリポジトリの名前。
  • PACKAGE: イメージの名前。
  • VERSION: イメージ ダイジェスト(sha256: で始まる文字列)
  • TAG: コンテナ イメージに関連付けられたタグ。

次のイメージ情報について考えてみます。

  • プロジェクト: my-project
  • リポジトリ: my-repo
  • リポジトリの場所: us-west1
  • イメージ: my-app

次のコマンドは、デフォルト プロジェクト内のロケーション us-west1 のリポジトリ my-repo 内のすべてのファイルを一覧表示します。

gcloud artifacts files list \
    --location=us-west1 \
    --repository=my-repo
次のコマンドは、ダイジェスト sha256:88b205d7995332e10e836514fbfd59ecaf8976fc15060cd66e85cdcebe7fb356 を持つイメージのバージョン内のファイルを一覧表示します。

gcloud artifacts files list \
    --project=my-project \
    --location=us-west1 \
    --repository=my-repo \
    --package=my-app \
    --version=sha256:88b205d7995332e10e836514fbfd59ecaf8976fc15060cd66e85cdcebe7fb356
次のコマンドは、1.0-dev タグを持つイメージのバージョン内のファイルを一覧表示します。

gcloud artifacts files list \
    --project=my-project \
    --location=us-west1 \
    --repository=my-repo \
    --package=my-app \
    --tag=1.0-dev

イメージにタグを付ける

Artifact Registry リポジトリ内の既存のイメージにタグを付けるか、それらをリポジトリに push する前にタグ付けできます。

イメージにタグを付ける

リポジトリ モード: 標準

Artifact Registry リポジトリのイメージには、Google Cloud コンソールかコマンドラインを使用してタグを追加できます。リポジトリでは、タグはイメージのバージョンに固有です。したがって、複数のバージョンのイメージを使用している場合、各タグは 1 つのバージョンにのみ適用されます。すでに使用されているタグでイメージにタグを付けると、元のバージョンから新しくタグ付けされたバージョンにタグが移動します。

コンソール

リポジトリ内のイメージにタグを付けるには:

  1. Google Cloud コンソールで [リポジトリ] ページを開きます。

    [リポジトリ] ページを開く

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

  3. タグ付けするイメージのバージョンを選択します。

  4. 選択したバージョンの行で、[その他の操作](その他の操作)をクリックしてから、[タグを編集] をクリックします。

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

gcloud

リポジトリ内のイメージにタグを付けるには、イメージのダイジェストまたはタグを使用してイメージのバージョンを指定してから、追加するタグを指定します。次のいずれかのコマンドを実行します。

gcloud artifacts docker tags add IMAGE-VERSION TAG

場所

  • IMAGE-VERSION は、タグを付けるイメージ バージョンの完全な名前です。イメージ ダイジェストまたはイメージ バージョンの既存のタグを使用します。
  • TAG は、追加するタグの完全な名前です。

たとえば、次のような特性を持つイメージについて考えてみましょう。

  • リポジトリの場所: us-west1
  • リポジトリ名: my-repo
  • プロジェクト ID: my-project
  • イメージ名: my-image
  • 既存のタグ: iteration6-final
  • 追加するタグ: release-candidate

タグ iteration6-final 付きのイメージのバージョンに release-candidate タグを追加するには、次のコマンドを実行します。

gcloud artifacts docker tags add \
us-west1-docker.pkg.dev/my-project/my-repo/my-image:iteration6-final \
us-west1-docker.pkg.dev/my-project/my-repo/my-image:release-candidate

イメージ名の形式とドメインをスコープとするプロジェクトの処理の詳細については、リポジトリとイメージの名前をご覧ください。

ローカル イメージにタグを付ける

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

イメージのタグを外す

リポジトリ モード: 標準

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

コンソール

  1. Google Cloud コンソールで [リポジトリ] ページを開きます。

    [リポジトリ] ページを開く

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

  3. タグを外すイメージのバージョンを選択します。

  4. 選択したバージョンの行で、[その他の操作](その他の操作)をクリックしてから、[タグを編集] をクリックします。

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

gcloud

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

 gcloud artifacts docker tags delete LOCATION-docker.pkg.dev/PROJECT/REPOSITORY/IMAGE:TAG

場所

  • LOCATION は、リポジトリのリージョンまたはマルチリージョン ロケーションです。
  • PROJECT は、Google Cloud プロジェクト ID です。 プロジェクト ID にコロン(:)が含まれている場合は、ドメインをスコープとするプロジェクトをご覧ください。
  • REPOSITORY は、イメージが保存されるリポジトリの名前です。
  • IMAGE は、リポジトリ内のイメージの名前です。
  • TAG は削除するバージョンのタグです。

画像の削除

リポジトリ モード: 標準、リモート

コンテナ イメージ全体か、タグまたはダイジェストに関連付けられている特定のイメージ バージョンを削除できます。

  • イメージを削除すると、操作を元に戻すことはできません。
  • イメージを削除しても、参照されているレイヤはすぐには削除されません。参照されていないレイヤは毎日削除されます。
  • リモート リポジトリの場合は、キャッシュに保存されたイメージのコピーが削除されます。上流のソースからのイメージは引き続き使用できます。リモート リポジトリが同じイメージに対する新しいリクエストを受信すると、リポジトリはもう一度ダウンロードしてキャッシュに保存します。

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

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

コンソール

  1. Google Cloud コンソールで [リポジトリ] ページを開きます。

    [リポジトリ] ページを開く

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

  3. 削除するバージョンを指定します。

  4. [削除] をクリックします。

  5. 確認ダイアログで [削除] をクリックします。

gcloud

イメージとそのすべてのタグを削除するには、次のコマンドを実行します。

gcloud artifacts docker images delete LOCATION-docker.pkg.dev/PROJECT/REPOSITORY/IMAGE --delete-tags

特定のイメージ バージョンを削除するには、次のいずれかのコマンドを使用します。

gcloud artifacts docker images delete LOCATION-docker.pkg.dev/PROJECT/REPOSITORY/IMAGE:TAG [--delete-tags]

または

gcloud artifacts docker images delete LOCATION-docker.pkg.dev/PROJECT/REPOSITORY/IMAGE@IMAGE-DIGEST [--delete-tags]

場所

  • LOCATION は、リポジトリのリージョンまたはマルチリージョンのロケーションです。
  • PROJECT は、Google Cloud プロジェクト ID です。プロジェクト ID にコロン(:)が含まれている場合は、ドメインをスコープとするプロジェクトをご覧ください。
  • REPOSITORY は、イメージが保存されるリポジトリの名前です。
  • IMAGE は、リポジトリ内のイメージの名前です。
  • TAG は削除するバージョンのタグです。複数のタグが同じイメージのバージョンに関連付けられている場合、最初にタグを削除せずにイメージのバージョンを削除するには、--delete-tags を含める必要があります。
  • IMAGE-DIGEST は、削除するバージョンの sha256 ハッシュ値です。タグがイメージ ダイジェストに関連付けられている場合、最初にタグを削除せずにイメージ バージョンを削除するには、--delete-tags を含める必要があります。
  • --delete-tags は、イメージ バージョンに適用されたすべてのタグを削除します。このフラグを使用すると、次の場合にイメージ バージョンを強制的に削除できます。
    • タグは指定したものの、イメージ バージョンに関連付けられた他のタグが存在する。
    • 少なくとも 1 つのタグを含むイメージ ダイジェストを指定した。

次のステップ

  • Docker コマンドを使用せずに、イメージ内に保存されている個々のファイルをダウンロードする。これはマニフェスト ファイルをすばやく検査する場合に便利です。