设置未标记清单的保留策略

Azure 容器注册表为你提供了为没有任何关联标记(未标记清单)的存储映像清单设置保留策略的选项 。 启用保留策略后,注册表中的未标记清单会在设置的数天后自动删除。 此功能可防止注册表填满不需要的项目,并有助于节省存储成本。

可以使用本地安装的 Azure CLI 来运行本文中的命令示例。 若要在本地使用 Azure CLI,需要安装 2.0.74 或更高版本。 运行 az --version 即可查找版本。 如果需要进行安装或升级,请参阅安装 Azure CLI

未标记清单的保留策略目前是“高级”容器注册表的预览功能。 有关注册表服务层级的信息,请参阅 Azure 容器注册表服务层

警告

谨慎设置保留策略 - 删除的映像数据是无法恢复的。 如果系统按清单摘要(而不是映像名称)拉取映像,则不应为未标记的清单设置保留策略。 删除无标的记映像后,这些系统即无法从注册表拉取映像。 不按清单拉取,而是考虑采用建议的最佳做法,即唯一标记方案。

关于保留策略

Azure 容器注册表对注册表中的清单进行引用计数。 当未标记清单时,它将检查保留策略。 如果启用了保留策略,则会根据策略中设置的天数,将清单删除操作排入队列,并带有特定日期。

单独的队列管理作业会不断处理消息,根据需要进行缩放。 例如,假设你在保留策略为 30 天的注册表中未标记两个清单(相隔 1 小时)。 将两条消息排入队列。 然后,30 天后,大约相隔 1 小时,将从队列中检索并处理消息,前提是策略仍然有效。

如果将未标记清单的 delete-enabled 属性设置为 false,则清单将被锁定且不被策略删除。

重要

保留策略仅适用于时间戳为启用策略的未标记的清单。 注册表中带更早时间戳的未标记清单不受策略约束。 有关删除映像数据的其他选项,请参阅 删除 Azure 容器注册表中的容器映像 中的示例。

设置保留策略 - 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. 取消标记 hello-world:latest 映像,例如,使用 az acr repository untag 命令。 未标记的清单将保留在注册表中。

    az acr repository untag \
      --name myregistry --image hello-world:latest
    
  3. 在几秒钟内,未标记的清单将被删除。 可以通过列出存储库中的清单来验证删除结果(例如,使用 az acr manifest list-metadata 命令)。 如果测试映像是存储库中唯一的映像,则存储库本身将被删除。

管理保留策略

要显示注册表中设置的保留策略,请运行 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 门户中设置注册表的保留策略。

启用保留策略

  1. 导航到 Azure 容器注册表。 在“策略”下,选择“保留”(预览) 。

  2. 在“状态”中,选择“启用” 。

  3. 选择介于 0 和 365 之间的天数来保留未标记的清单。 选择“保存”。

    Enable a retention policy in Azure portal

禁用保留策略

  1. 导航到 Azure 容器注册表。 在“策略”下,选择“保留”(预览) 。
  2. 在“状态”中,选择“禁用” 。 选择“保存”。

后续步骤