8.7. 设置标签过期
可以使用标签过期功能,将镜像标签设置为在所选日期和时间从 Red Hat Quay 存储库 过期。这个功能包括以下特征:
- 当镜像标签过期时,会从存储库中删除。如果它是特定镜像的最后一个标签,则镜像也会被删除。
- 过期时间基于每个标签设置。它没有作为整个存储库设置。
- 标签过期或删除后,它不会立即从 registry 中删除。这取决于 时间机器 功能中分配的时间,定义何时永久删除标签或垃圾收集的时间。默认情况下,这个值设置为 14 天,但管理员可以将此时间调整为多个选项之一。直到垃圾回收发生的时间点,可以恢复标签更改。
Red Hat Quay 超级用户没有与从用户存储库中删除已过期的镜像相关的特殊权限。超级用户没有收集信息并在用户存储库上执行的操作的中央机制。每个存储库的所有者是管理过期和删除其镜像的所有者。
标签过期时间可以通过三种方式之一设置:
-
在创建镜像时,通过在 Dockerfile 中设置
quay.expires-after=
标签。这会将一个时间设置为在构建镜像时过期。该标签仅适用于镜像清单。 -
在创建镜像时,通过在 Dockerfile 中设置
quay.expires-after=
注解标签。可以为镜像清单和镜像索引传递--annotation
。 通过在 Red Hat Quay UI 上选择过期日期。例如:
设置标签过期可帮助自动清理旧的或未使用的标签,有助于减少存储空间。
8.7.1. 从存储库设置标签过期 复制链接链接已复制到粘贴板!
流程
- 在 Red Hat Quay v2 UI 仪表板上,单击导航窗格中的 Repositories。
- 单击具有镜像标签的存储库的名称。
- 点镜像菜单 kebab 并选择 Change expiration。
-
可选。或者,您可以通过点多个标签框来批量添加过期日期,然后选择 Actions
Set expiration。 -
在 Change Tags Expiration 窗口中,设置一个到期日期,指定星期几、月份、月份和年份。例如,
2023 年 11 月 15 日星期三
。或者,您可以点击日历按钮并手动选择日期。 -
设置时间,例如
2:30 PM
。 -
单击 Change Expiration 以确认日期和时间。返回以下通知:成功将
标签测试的过期时间设置为 2023 年 11 月 15 日,2:26 PM
。 在 Red Hat Quay v2 UI Tags 页面中,您可以看到标签设置为过期。例如:
8.7.2. 设置 Dockerfile 中的标签过期 复制链接链接已复制到粘贴板!
您可以使用 docker label
命令将标签(例如 quay.expires-after=20h
)添加到镜像标签中,以便标签在指示的时间后自动过期。接受小时、天或周的以下值:
-
1h
-
2d
-
3w
过期时间从镜像推送到 registry 的时间开始。
流程
输入以下
docker label
命令,为所需的镜像标签添加标签。标签的格式应为quay.expires-after=20h
,以指示该标签应当在 20 小时后过期。使用所需的过期时间替换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. 使用注解设置标签过期 复制链接链接已复制到粘贴板!
您可以在将镜像推送到 registry 时,将注解(如 quay.expires-after=20h
)添加到镜像标签中。此注解会导致标签在指定时间后自动过期。该注解可同时应用到镜像清单和镜像索引。接受小时、天或周的以下值:
-
1h
-
2d
-
3w
过期时间从镜像推送到 registry 的时间开始。
使用 or- annotation
标志可以通过 oras
CLI 工具最简单的。
先决条件
-
您已下载了
oras
CLI。如需更多信息,请参阅安装 https://oras.land/docs/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 工具,您可以取消设置之前建立的过期时间。
先决条件
-
您已下载了
oras
CLI。如需更多信息,请参阅安装 https://oras.land/docs/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}
命令并传递 expiration 字段来设置标签过期:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
"Updated"
"Updated"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow