このページでは、Docker リポジトリ内のコンテナ イメージを管理する方法を説明します。イメージの管理には、リポジトリ内のイメージの一覧表示、タグの追加、タグの削除、新しいリポジトリへのイメージのコピー、イメージの削除が含まれます。
イメージの push と pull の詳細については、イメージの push と pull をご覧ください。
始める前に
- ターゲット リポジトリが存在しない場合は、新しいリポジトリを作成します。
- リポジトリに必要な権限が付与されていることを確認します。
- (省略可)gcloud コマンドのデフォルトを構成します。
必要なロール
イメージの管理に必要な権限を取得するには、リポジトリに対する次の IAM ロールの付与を管理者に依頼してください。
- イメージ、イメージ内のファイル、タグを表示する: Artifact Registry 読み取り(
roles/artifactregistry.reader
) - Artifact Registry を使用してイメージにタグを付けるか、タグを編集する: Artifact Registry 書き込み(
roles/artifactregistry.writer
) - イメージを削除する、またはタグを削除する: Artifact Registry リポジトリ管理者(
roles/artifactregistry.repoAdmin
)
ロールの付与の詳細については、アクセスの管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
イメージのリストを表示する
リポジトリ モード: 標準、リモート
イメージは、Google Cloud Console か gcloud CLI を使用して一覧表示できます。
このリポジトリ リストには、Artifact Registry リポジトリと Container Registry リポジトリの両方が含まれます。Container Registry リポジトリのイメージを操作するには、イメージの管理に関する Container Registry のドキュメントをご覧ください。
コンソール
リポジトリ内のイメージを表示するには:
Google Cloud コンソールで [リポジトリ] ページを開きます。
コンテナ イメージがあるリポジトリをクリックします。
イメージをクリックすると、そのバージョンが表示されます。
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
- リポジトリ名:
my-repo
- プロジェクト ID:
my-project
- イメージ名:
my-image
完全なリポジトリ名は次のとおりです。
us-docker.pkg.dev/my-project/my-repo
完全なイメージ名は次のとおりです。
us-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-central1
- イメージ:
my-app
次のコマンドは、デフォルト プロジェクト内のロケーション us-central1
にあるリポジトリ my-repo
内のすべてのファイルを一覧表示します。
gcloud artifacts files list \
--location=us-central1 \
--repository=my-repo
次のコマンドは、ダイジェスト sha256:88b205d7995332e10e836514fbfd59ecaf8976fc15060cd66e85cdcebe7fb356
を含むイメージのバージョン内のファイルを一覧表示します。
gcloud artifacts files list \
--project=my-project \
--location=us-central1 \
--repository=my-repo \
--package=my-app \
--version=sha256:88b205d7995332e10e836514fbfd59ecaf8976fc15060cd66e85cdcebe7fb356
次のコマンドは、1.0-dev
というタグが付いたイメージのバージョン内のファイルを一覧表示します。
gcloud artifacts files list \
--project=my-project \
--location=us-central1 \
--repository=my-repo \
--package=my-app \
--tag=1.0-dev
イメージにタグを付ける
Artifact Registry リポジトリ内の既存のイメージにタグを付けることも、リポジトリに push する前にそのイメージにタグを付けることもできます。
リポジトリ内のイメージにタグを付ける
リポジトリ モード: 標準
Artifact Registry リポジトリのイメージには、Google Cloud コンソールかコマンドラインを使用してタグを追加できます。リポジトリでは、タグはイメージのバージョンに固有です。したがって、複数のバージョンのイメージを使用している場合、各タグは 1 つのバージョンにのみ適用されます。すでに使用されているタグでイメージにタグを付けると、元のバージョンから新しくタグ付けされたバージョンにタグが移動します。
コンソール
リポジトリ内のイメージにタグを付けるには:
Google Cloud コンソールで [リポジトリ] ページを開きます。
イメージをクリックすると、そのイメージのバージョンが表示されます。
タグを付けるイメージのバージョンを選択します。
選択したバージョンの行で、[その他の操作](
)をクリックし、[タグを編集] をクリックします。
フィールドに新しいタグを入力し、[保存] をクリックします。
gcloud
リポジトリ内のイメージにタグを付けるには、イメージ ダイジェストまたはイメージタグを使用してイメージのバージョンを指定し、追加するタグを指定します。次のいずれかのコマンドを実行します。
gcloud artifacts docker tags add IMAGE-VERSION TAG
Where
- IMAGE-VERSION は、タグを付けるイメージ バージョンの完全な名前です。イメージ ダイジェストまたはイメージ バージョンの既存のタグを使用します。
- TAG は、追加するタグの完全な名前です。
たとえば、次のような特性を持つイメージについて考えてみましょう。
- リポジトリの場所:
us
- リポジトリ名:
my-repo
- プロジェクト ID:
my-project
- イメージ名:
my-image
- 既存のタグ:
iteration6-final
- 追加するタグ:
release-candidate
タグ iteration6-final
付きのイメージのバージョンに release-candidate
タグを追加するには、次のコマンドを実行します。
gcloud artifacts docker tags add \
us-docker.pkg.dev/my-project/my-repo/my-image:iteration6-final \
us-docker.pkg.dev/my-project/my-repo/my-image:release-candidate
イメージ名の形式とドメインをスコープとするプロジェクトの処理の詳細については、リポジトリとイメージの名前をご覧ください。
ローカル イメージにタグを付ける
ローカル イメージを Artifact Registry に push するには、最初にリポジトリ名にタグ付けしてからイメージを push する必要があります。手順については、push と pull をご覧ください。
イメージのタグを外す
リポジトリ モード: 標準
Artifact Registry 内のイメージからタグを削除するには、Google Cloud Console またはコマンドラインを使用します。
コンソール
Google Cloud コンソールで [リポジトリ] ページを開きます。
イメージをクリックすると、そのイメージのバージョンが表示されます。
タグを解除するイメージ バージョンを選択します。
選択したバージョンの行で、[その他の操作](
)をクリックし、[タグを編集] をクリックします。
タグを削除して [保存] をクリックします。
gcloud
タグを削除してイメージから削除するには、次のコマンドを実行します。
gcloud artifacts docker tags delete LOCATION-docker.pkg.dev/PROJECT/REPOSITORY/IMAGE:TAG
Where
- LOCATION は、リポジトリのリージョンまたはマルチリージョンのロケーションです。
- PROJECT は、Google Cloud プロジェクト ID です。
プロジェクト ID にコロン(
:
)が含まれている場合は、ドメインをスコープとするプロジェクトをご覧ください。 - REPOSITORY は、イメージが保存されるリポジトリの名前です。
- IMAGE は、リポジトリ内のイメージの名前です。
- TAG は、削除するバージョンのタグです。
イメージの削除
リポジトリ モード: 標準、リモート
コンテナ イメージ全体か、タグまたはダイジェストに関連付けられている特定のイメージ バージョンを削除できます。
- イメージを削除すると、操作を元に戻すことはできません。
- リモート リポジトリの場合は、キャッシュに保存されたイメージのコピーが削除されます。上流のソースからのイメージは引き続き使用できます。リモート リポジトリが同じイメージに対する新しいリクエストを受信すると、リポジトリはもう一度ダウンロードしてキャッシュに保存します。
未使用のイメージの管理に役立つその他のツールもあります。たとえば、gcr-cleaner ツールは、さまざまな基準に基き、古いイメージを見つけて削除します。未使用のイメージを削除すると、ストレージ コストを削減できます。gcr-cleaner
ツールは Google の公式プロダクトではありません。
Google Cloud Console または gcloud CLI からイメージを削除するには:
コンソール
Google Cloud コンソールで [リポジトリ] ページを開きます。
イメージ名をクリックすると、そのイメージのバージョンが表示されます。
削除するバージョンを選択します。
[削除] をクリックします。
確認のダイアログ ボックスで、[削除] をクリックします。
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]
Where
- LOCATION は、リポジトリのリージョンまたはマルチリージョンのロケーションです。
- PROJECT は、Google Cloud プロジェクト ID です。
プロジェクト ID にコロン(
:
)が含まれている場合は、ドメインをスコープとするプロジェクトをご覧ください。 - REPOSITORY は、イメージが保存されるリポジトリの名前です。
- IMAGE は、リポジトリ内のイメージの名前です。
- TAG は、削除するバージョンのタグです。同じイメージ バージョンに複数のタグが関連付けられている場合は、最初にタグを削除せずにイメージ バージョンを削除するために
--delete-tags
を含める必要があります。 - IMAGE-DIGEST は、削除するバージョンの sha256 ハッシュ値です。タグがイメージ ダイジェストに関連付けられている場合は、タグを削除せずに
--delete-tags
を追加してイメージ バージョンを削除する必要があります。 --delete-tags
は、イメージ バージョンに適用されているすべてのタグを削除します。このフラグを使用すると、次の場合にイメージ バージョンを強制的に削除できます。- タグは指定したものの、イメージ バージョンに関連付けられた他のタグが存在する。
- 少なくとも 1 つのタグを含むイメージ ダイジェストを指定した。