8.7. タグの有効期限を設定する
タグの有効期限 機能を使用すると、選択した日時に Red Hat Quay リポジトリーのイメージタグが期限切れになるように設定できます。この機能には次の特徴があります。
- イメージタグの有効期限が切れると、そのタグがリポジトリーから削除されます。特定のイメージに対する最後のタグであれば、そのイメージも削除するように設定されます。
- 有効期限はタグごとに設定されます。リポジトリー全体に対して設定されるものではありません。
- タグは期限切れになったり、削除されたりしても、レジストリーからすぐには削除されません。これは、タイムマシン 機能で設計された割り当て時間によって決まります。この時間により、タグを完全に削除するタイミング、またはガベージコレクションを行うタイミングが定義されます。デフォルトでは、この値は 14 日 に設定されていますが、管理者は複数のオプションから 1 つ選択することで、この時間を調整できます。ガベージコレクションが発生するまでは、タグの変更を元に戻すことができます。
Red Hat Quay のスーパーユーザーには、ユーザーリポジトリーからの期限切れイメージの削除に関する特別な権限はありません。スーパーユーザーがユーザーリポジトリーの情報を収集し、操作するための一元的なメカニズムはありません。有効期限やイメージ削除の管理は、各リポジトリーの所有者に委ねられています。
タグの有効期限は、次の 3 つの方法のいずれかで設定できます。
-
イメージの作成時に Dockerfile に
quay.expires-after=ラベルを設定します。これは、イメージをビルドした時点からの有効期間を設定するものです。このラベルはイメージマニフェストに対してのみ機能します。 -
イメージの作成時に、Dockerfile に
quay.expires-after=アノテーションラベルを設定します。--annotationは、イメージマニフェストとイメージインデックスの両方に渡すことができます。 Red Hat Quay UI で有効期限を選択する方法。以下に例を示します。
タグの有効期限を設定すると、古いタグや未使用のタグのクリーンアップを自動化できるため、ストレージ容量を削減できます。
8.7.1. リポジトリーからタグの有効期限を設定する リンクのコピーリンクがクリップボードにコピーされました!
手順
- Red Hat Quay v2 UI ダッシュボードのナビゲーションペインで Repositories をクリックします。
- イメージタグのあるリポジトリーの名前をクリックします。
- イメージの縦の省略記号メニューをクリックし、Change expiration を選択します。
-
オプション: または、複数のタグのボックスをクリックし、Actions
Set expiration を選択して有効期限を一括追加することもできます。 -
Change Tags Expiration ウィンドウで、曜日、月、日、年を指定して有効期限を設定します。たとえば、
Wednesday, November 15, 2023に設定します。または、カレンダーボタンをクリックして日付を手動で選択することもできます。 -
時刻を
2:30 PMなどに設定します。 -
Change Expiration をクリックして日付と時刻を確認します。
Successfully set expiration for tag test to Nov 15, 2023, 2:26 PMという通知が返されます。 Red Hat Quay v2 UI の Tags ページで、タグの有効期限の設定を確認できます。以下に例を示します。
8.7.2. Dockerfile からタグの有効期限を設定する リンクのコピーリンクがクリップボードにコピーされました!
docker label コマンドを使用してイメージタグにラベル (例: quay.expires-after=20h) を追加すると、指定時間の経過後にタグが自動的に期限切れになります。以下に示す時間、日、または週の値を指定できます。
-
1h -
2d -
3w
有効期限は、イメージがレジストリーにプッシュされた時点から始まります。
手順
次の
docker labelコマンドを入力し、目的のイメージタグにラベルを追加します。タグが 20 時間後に期限切れになるよう指定するには、ラベルをquay.expires-after=20hという形式にします。20hは、希望の有効期限に置き換えます。以下に例を示します。docker label quay.expires-after=20h quay-server.example.com/quayadmin/<image>:<tag>
$ docker label quay.expires-after=20h quay-server.example.com/quayadmin/<image>:<tag>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
8.7.3. アノテーションを使用してタグの有効期限を設定する リンクのコピーリンクがクリップボードにコピーされました!
イメージをレジストリーにプッシュするときに、--annotation フラグを使用して、quay.expires-after=20h などのアノテーションをイメージタグに追加できます。このアノテーションにより、指定された時間が経過するとタグが自動的に期限切れになります。アノテーションは、イメージマニフェストとイメージインデックスの両方に適用できます。以下に示す時間、日、または週の値を指定できます。
-
1h -
2d -
3w
有効期限は、イメージがレジストリーにプッシュされた時点から始まります。
--annotation フラグを使用する最も簡単な方法は、oras CLI ツールを使用することです。
前提条件
-
orasCLI をダウンロードした。詳細は、Installation を参照してください。
手順
目的のイメージタグにアノテーションを追加するには、次の
oras push --annotationコマンドを入力します。アノテーションは、設定された時間にタグが期限切れになることを示すためにquay.expires-after=<value>の形式にする必要があります。以下に例を示します。oras push --annotation quay.expires-after=<value> \ <quay-server.example.com>/<organization>/<repository>:<tag> \ <file_path>:<media_type>
$ oras push --annotation quay.expires-after=<value> \ <quay-server.example.com>/<organization>/<repository>:<tag> \ <file_path>:<media_type>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Red Hat Quay UI を確認するか、次のコマンドを入力して、有効期限が適用されていることを確認します。
curl -X GET \ -H "Authorization: Bearer <bearer_token>" \ -H "Accept: application/json" \ https://<quay-server.example.com>/api/v1/repository/<namespace>/<repository_name>/tag/?specificTag=<tag>" \
$ curl -X GET \ -H "Authorization: Bearer <bearer_token>" \ -H "Accept: application/json" \ https://<quay-server.example.com>/api/v1/repository/<namespace>/<repository_name>/tag/?specificTag=<tag>" \Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
{"tags": [{"name": "test2", "reversion": false, "start_ts": 1743706344, "end_ts": 1743778344, "manifest_digest": "sha256:c370e931b5eca44fd753bd92e6991ed3be70008e8df15078083359409111f8c3", "is_manifest_list": false, "size": 12, "last_modified": "Thu, 03 Apr 2025 18:52:24 -0000", "expiration": "Fri, 04 Apr 2025 14:52:24 -0000"}, {"name": "test2", "reversion": false, "start_ts": 1742493776, "end_ts": 1743706344, "manifest_digest": "sha256:d80aa3d7f5f5388cfae543b990d3cd3d47ff51c48ef29ff66102427bf7bc0a88", "is_manifest_list": false, "size": 2266046, "last_modified": "Thu, 20 Mar 2025 18:02:56 -0000", "expiration": "Thu, 03 Apr 2025 18:52:24 -0000"}], "page": 1, "has_additional": false}{"tags": [{"name": "test2", "reversion": false, "start_ts": 1743706344, "end_ts": 1743778344, "manifest_digest": "sha256:c370e931b5eca44fd753bd92e6991ed3be70008e8df15078083359409111f8c3", "is_manifest_list": false, "size": 12, "last_modified": "Thu, 03 Apr 2025 18:52:24 -0000", "expiration": "Fri, 04 Apr 2025 14:52:24 -0000"}, {"name": "test2", "reversion": false, "start_ts": 1742493776, "end_ts": 1743706344, "manifest_digest": "sha256:d80aa3d7f5f5388cfae543b990d3cd3d47ff51c48ef29ff66102427bf7bc0a88", "is_manifest_list": false, "size": 2266046, "last_modified": "Thu, 20 Mar 2025 18:02:56 -0000", "expiration": "Thu, 03 Apr 2025 18:52:24 -0000"}], "page": 1, "has_additional": false}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
8.7.4. アノテーションを使用してタグの有効期限を削除する リンクのコピーリンクがクリップボードにコピーされました!
oras CLI ツールを使用すると、以前に設定された有効期限を解除できます。
前提条件
-
orasCLI をダウンロードした。詳細は、Installation を参照してください。 -
quay.expires-after=<value>のアノテーションが付いたイメージをプッシュした。
手順
目的のイメージタグへのアノテーションを削除するには、次の
oras push --annotationコマンドを入力します。アノテーションはquay.expires-after=never形式にする必要があります。以下に例を示します。oras push --annotation quay.expires-after=never \ <quay-server.example.com>/<organization>/<repository>:<tag> \ <file_path>:<media_type>
$ oras push --annotation quay.expires-after=never \ <quay-server.example.com>/<organization>/<repository>:<tag> \ <file_path>:<media_type>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 最新のマニフェストには有効期限がなくなります。Red Hat Quay UI を確認するか、次のコマンドを入力して、有効期限が削除されたことを確認します。
{"tags": [{"name": "test2", "reversion": false, "start_ts": 1743708135, "manifest_digest": "sha256:19e3a3501b4125cce9cb6bb26ac9207c325259bef94dc66490b999f93c4c83a9", "is_manifest_list": false, "size": 12, "last_modified": "Thu, 03 Apr 2025 19:22:15 -0000"}, {"name": "test2", "reversion": false, "start_ts": 1743706344, "end_ts": 1743708135}]}{"tags": [{"name": "test2", "reversion": false, "start_ts": 1743708135, "manifest_digest": "sha256:19e3a3501b4125cce9cb6bb26ac9207c325259bef94dc66490b999f93c4c83a9", "is_manifest_list": false, "size": 12, "last_modified": "Thu, 03 Apr 2025 19:22:15 -0000"}, {"name": "test2", "reversion": false, "start_ts": 1743706344, "end_ts": 1743708135}]}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有効期限は記載されていないことに注意してください。
8.7.5. API を使用してタグの有効期限を設定する リンクのコピーリンクがクリップボードにコピーされました!
API を使用してイメージタグの有効期限を設定できます。
前提条件
- OAuth アクセストークンを作成 した。
-
config.yamlファイルでBROWSER_API_CALLS_XHR_ONLY: falseを設定している。
手順
PUT /api/v1/repository/{repository}/tag/{tag}コマンドを使用して有効期限フィールドを渡すことで、イメージのタグの有効期限を設定できます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
"Updated"
"Updated"Copy to Clipboard Copied! Toggle word wrap Toggle overflow