このページでは、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-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 つのバージョンにのみ適用されます。すでに使用されているタグでイメージにタグを付けると、元のバージョンから新しくタグ付けされたバージョンにタグが移動します。
コンソール
リポジトリ内のイメージにタグを付けるには:
Google Cloud コンソールで [リポジトリ] ページを開きます。
イメージをクリックすると、そのイメージのバージョンが表示されます。
タグ付けするイメージのバージョンを選択します。
選択したバージョンの行で、[その他の操作]()をクリックしてから、[タグを編集] をクリックします。
フィールドに新しいタグを入力し、[保存] をクリックします。
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 またはコマンドラインを使用します。
コンソール
Google Cloud コンソールで [リポジトリ] ページを開きます。
イメージをクリックすると、そのイメージのバージョンが表示されます。
タグを外すイメージのバージョンを選択します。
選択したバージョンの行で、[その他の操作]()をクリックしてから、[タグを編集] をクリックします。
タグを削除して [保存] をクリックします。
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 からイメージを削除するには:
コンソール
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]
ここでは
- LOCATION は、リポジトリのリージョンまたはマルチリージョン ロケーションです。
- PROJECT は、Google Cloud プロジェクト ID です。 プロジェクト ID にコロン(:)が含まれている場合は、ドメインをスコープとするプロジェクトをご覧ください。
- REPOSITORY は、イメージが保存されるリポジトリの名前です。
- IMAGE は、リポジトリ内のイメージの名前です。
- TAG は削除するバージョンのタグです。複数のタグが同じイメージのバージョンに関連付けられている場合、最初にタグを削除せずにイメージのバージョンを削除するには、
--delete-tags
を含める必要があります。 - IMAGE-DIGEST は、削除するバージョンの sha256 ハッシュ値です。タグがイメージ ダイジェストに関連付けられている場合、最初にタグを削除せずにイメージ バージョンを削除するには、
--delete-tags
を含める必要があります。 --delete-tags
は、イメージ バージョンに適用されたすべてのタグを削除します。このフラグを使用すると、次の場合にイメージ バージョンを強制的に削除できます。:- タグは指定したものの、イメージ バージョンに関連付けられた他のタグが存在する。
- 少なくとも 1 つのタグを含むイメージ ダイジェストを指定した。
次のステップ
- Docker コマンドを使用せずに、イメージ内に保存されている個々のファイルをダウンロードする。これはマニフェスト ファイルをすばやく検査する場合に便利です。