タグなしマニフェストの保持ポリシーの設定

Azure Container Registry では、タグが関連付けられていない格納済みのイメージ マニフェスト ("タグなしマニフェスト") に対して、"保持ポリシー" を設定できます。 保持ポリシーが有効な場合、レジストリ内にあるタグなしマニフェストは、設定日数の経過後に自動で削除されます。 この機能は、不要なアーティファクトでレジストリがいっぱいになることを防ぐほか、ストレージ コストの削減に役立ちます。

この記事のサンプル コマンドは、Azure Cloud Shell または Azure CLI のローカル インストールを使用して実行できます。 これをローカルで使用したい場合は、バージョン 2.0.74 以降が必要です。 バージョンを確認するには、az --version を実行します。 インストールまたはアップグレードする必要がある場合は、Azure CLI のインストールに関するページを参照してください。

タグのないマニフェストのアイテム保持ポリシーは現在、Premium コンテナー レジストリのプレビュー機能です。 レジストリ サービス レベルについては、Azure Container Registry のサービス レベルに関するページをご覧ください。

警告

保持ポリシーの設定は慎重に行ってください。削除したイメージ データは復元できません。 (イメージ名ではなく) マニフェスト ダイジェストによってイメージをプルするシステムを使用している場合は、タグなしマニフェスト用の保持ポリシーは設定しないようにしてください。 このようなシステムでは、タグの付いていないイメージを削除すると、レジストリからイメージをプルできなくなります。 マニフェストでプルするのではなく、一意のタグ付けスキームの推奨されるベスト プラクティスを採用することを検討してください。

アイテム保持ポリシーについて

Azure Container Registry は、レジストリ内のマニフェストのカウントを参照します。 マニフェストがタグ付けされていない場合は、保持ポリシーを確認します。 保持ポリシーが有効になっている場合、マニフェストの削除操作は、ポリシーで設定された日数に従って、特定の日付のキューに登録されます。

個別のキュー管理ジョブは、常にメッセージを処理し、必要に応じてスケーリングします。 例えば、保持ポリシーが 30 日のレジストリで、1 時間間隔の 2 つのマニフェストのタグを解除したとします。 この場合、2 つのメッセージがキューに登録されます。 30 日後、ポリシーが引き続き有効であると見なされ、約 1 時間間隔でメッセージがキューから取得されて処理されます。

タグ付けされていないマニフェストの delete-enabled 属性が false に設定されている場合、マニフェストはロックされ、ポリシーによって削除されません。

重要

アイテム保持ポリシーは、ポリシーが有効になった後にのタイムスタンプを持つタグ付けされていないマニフェストにのみ適用されます。 以前のタイムスタンプを持つレジストリ内のタグ付けされていないマニフェストは、ポリシーの対象になりません。 イメージ データを削除するその他のオプションについては、「Azure Container Registry のコンテナー イメージを削除する」の例を参照してください。

保持ポリシーの設定 - CLI

次の例では、Azure CLI を使用して、レジストリ内のタグなしマニフェストの保持ポリシーを設定する方法を示します。

保持ポリシーの有効化

既定では、コンテナー レジストリに保持ポリシーは設定されていません。 保持ポリシーを設定または更新するには、Azure CLI で az acr config retention update コマンドを実行します。 タグなしマニフェストを保持する期間は、0 日から 365 日までの範囲で指定できます。 日数を指定しない場合、コマンドによって既定値の 7 日に設定されます。 この保持期間の後、レジストリ内にあるすべてのタグなしマニフェストが自動的に削除されます。

次の例では、レジストリ myregistry 内のタグなしマニフェストに対して、30 日間の保持ポリシーを設定しています。

az acr config retention update --registry myregistry --status enabled --days 30 --type UntaggedManifests

次の例では、レジストリ内にあるマニフェストのタグ付けがなくなると即座にそのマニフェストを削除するように、ポリシーを設定します。 このようなポリシーを作成するには、保持期間を 0 日に設定します。

az acr config retention update \
  --registry myregistry --status enabled \
  --days 0 --type UntaggedManifests

アイテム保持ポリシーを検証する

保有期間が 0 日の上記のポリシーを有効にすると、タグなしマニフェストが削除されることをすぐに確認できます。

  1. テスト イメージ hello-world:latest をレジストリにプッシュするか、別のテストイメージを選択して置き換えます。
  2. az acr repository untag コマンドを使用して、例えば hello-world:latest イメージのタグを削除します。 タグなしマニフェストはレジストリに残ります。
    az acr repository untag \
      --name myregistry --image hello-world:latest
    
  3. 数秒で、タグなしマニフェストが削除されます。 削除されたことを確認するには、az acr manifest list-metadata コマンドなどを使用してリポジトリでマニフェストを一覧表示します。 リポジトリにテスト イメージが 1 つしかない場合、リポジトリ自体が削除されます。

保持ポリシーを管理する

レジストリに設定されている保持ポリシーを表示するには、az acr config retention show コマンドを実行します。

az acr config retention show --registry myregistry

レジストリの保持ポリシーを無効にするには、az acr config retention update コマンドを実行して --status disabled を設定します。

az acr config retention update \
  --registry myregistry --status disabled \
  --type UntaggedManifests

保持ポリシーの設定 - ポータル

レジストリの保持ポリシーは、Azure portal でも設定できます。

保持ポリシーの有効化

  1. 自分の Azure コンテナー レジストリに移動します。 [ポリシー] の下にある [Retention (Preview)](保持 (プレビュー)) を選択します。
  2. [状態][有効] を選択します。
  3. タグなしマニフェストの保持期間を、0 日から 365 日までの範囲で選択します。 [保存] を選択します。

Azure portal での保持ポリシーの有効化

保持ポリシーの無効化

  1. 自分の Azure コンテナー レジストリに移動します。 [ポリシー] の下にある [Retention (Preview)](保持 (プレビュー)) を選択します。
  2. [状態][無効] を選択します。 [保存] を選択します。

次のステップ