9.4. 设置标签过期


可以使用标签过期功能,将镜像标签设置为在所选日期和时间从 Quay.io 存储库 过期。此功能包括以下特征:

  • 当镜像标签过期时,它将从存储库中删除。如果这是特定镜像的最后一个标签,则镜像也会设置为被删除。
  • 过期会根据每个标签设置。对于整个仓库,没有设置它。
  • 标签过期或删除后,它不会立即从 registry 中删除。这取决于在时间 机器功能中设计的分配时间,该功能定义何时永久删除标签或垃圾收集。默认情况下,这个值设置为 14 天,但管理员可以将此时间调整为多个选项之一。在进行垃圾回收前,可以恢复标签更改。

标签过期时间可以通过三种方式之一设置:

  • 在创建镜像时,通过在 Dockerfile 中设置 quay.expires-after= 标签。这会将一个时间设置为在构建镜像时过期。该标签仅适用于镜像清单。
  • 在创建镜像时,通过在 Dockerfile 中设置 quay.expires-after= 注解标签。可以为镜像清单和镜像索引传递 --annotation
  • 通过选择 Quay.io UI 上的过期日期。例如:

    Change tag expiration under the Options icon or from the EXPIRES column

设置标签过期可帮助自动清理旧的或未使用的标签,有助于减少存储空间。

9.4.1. 从存储库设置标签过期

流程

  1. 在 Red Hat Quay v2 UI 仪表板上,单击导航窗格中的 Repositories
  2. 单击具有镜像标签的存储库的名称。
  3. 点镜像菜单 kebab 并选择 Change expiration
  4. 可选。或者,您可以通过点多个标签框来批量添加过期日期,然后选择 Actions Set expiration
  5. Change Tags Expiration 窗口中,设置一个到期日期,指定星期几、月份、月份和年份。例如,2023 年 11 月 15 日星期三。或者,您可以点击日历按钮并手动选择日期。
  6. 设置时间,例如 2:30 PM
  7. 单击 Change Expiration 以确认日期和时间。返回以下通知:成功将 标签测试的过期时间设置为 2023 年 11 月 15 日,2:26 PM
  8. 在 Red Hat Quay v2 UI Tags 页面中,您可以看到标签设置为过期。例如:

    Red Hat Quay v2 UI tag expiration

9.4.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>
    Copy to Clipboard Toggle word wrap

9.4.3. 使用注解设置标签过期

您可以在将镜像推送到 registry 时,将注解(如 quay.expires-after=20h )添加到镜像标签中。此注解会导致标签在指定时间后自动过期。该注解可同时应用到镜像清单和镜像索引。可接受小时、天或周的以下值:

  • 1h
  • 2d
  • 3w

过期时间从镜像推送到 registry 的时间开始。

注意

使用 or- annotation 标志可以通过 oras CLI 工具最简单的。

先决条件

流程

  1. 输入以下 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>
    Copy to Clipboard Toggle word wrap

    输出示例

    ✓ Uploaded  hello.txt                                                                                                       12/12  B 100.00%  321ms
      └─ sha256:74b9e308133afb3bceae961097cb2aa481483869d695ce1414cd2bc7f046027c
    ✓ Uploaded  application/vnd.oci.empty.v1+json                                                                                 2/2  B 100.00%  328ms
      └─ sha256:44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a
    ✓ Uploaded  application/vnd.oci.image.manifest.v1+json                                                                    620/620  B 100.00%     0s
      └─ sha256:c370e931b5eca44fd753bd92e6991ed3be70008e8df15078083359409111f8c3
    Pushed [registry] quay-server.example.com/fortestuser/busybox:test2
    ArtifactType: application/vnd.unknown.artifact.v1
    Copy to Clipboard Toggle word wrap

  2. 通过检查 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>" \
    Copy to Clipboard Toggle word wrap

    输出示例

    {"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 Toggle word wrap

9.4.4. 使用注解删除标签过期

使用 oras CLI 工具,您可以取消设置之前建立的过期时间。

先决条件

流程

  1. 输入以下 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>
    Copy to Clipboard Toggle word wrap

    输出示例

    ✓ Uploaded  hello.txt                                                                                                       12/12  B 100.00%  321ms
      └─ sha256:74b9e308133afb3bceae961097cb2aa481483869d695ce1414cd2bc7f046027c
    ✓ Uploaded  application/vnd.oci.empty.v1+json                                                                                 2/2  B 100.00%  328ms
      └─ sha256:44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a
    ✓ Uploaded  application/vnd.oci.image.manifest.v1+json                                                                    620/620  B 100.00%     0s
      └─ sha256:c370e931b5eca44fd753bd92e6991ed3be70008e8df15078083359409111f8c3
    Pushed [registry] quay-server.example.com/fortestuser/busybox:test2
    ArtifactType: application/vnd.unknown.artifact.v1
    Copy to Clipboard Toggle word wrap

  2. 最新清单将不再有过期时间。通过检查 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}]}
    Copy to Clipboard Toggle word wrap

    请注意,没有列出过期时间。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat