在 Azure 容器注册表中使用软删除策略恢复删除的项目(预览版)

Azure 容器注册表 (ACR) 允许启用软删除策略,以便在设置的保留期内恢复任何意外删除的项目。

软删除项目生命周期的示意图。

软删除策略的各个方面

可以随时启用/禁用软删除策略。 在 ACR 中启用软删除策略后,它会将已删除的项目作为设置了保留期的软删除项目进行管理。 因此,你可以列出、筛选和还原软删除的项目。

保留期

软删除项目的默认保持期为 7 天,但可以将保持期值设置为 1 到 90 天。 可以设置、更新和更改保留策略值。 保留期结束后,软删除的项目会过期。

自动清除

自动清除每 24 小时运行一次,在永久删除软删除项目之前,始终考虑保留天数的当前值。 例如,在软删除项目 5 天后,如果将保留天数值从 7 天更改为 14 天,该项目只会在最初软删除后的 14 天后过期。

可用性和定价信息

此功能可在所有服务层级(也称为 SKU)中使用。 有关注册表服务层级的信息,请参阅 Azure 容器注册表服务层

注意

软删除的项目将按照存储的现行 SKU 定价计费。

预览版限制

重要

软删除策略目前以预览版提供。 有关 beta 版本、预览版或尚未正式发布的版本的 Azure 功能所适用的法律条款,请参阅 Azure 预览版的补充使用条款

  • ACR 目前不支持手动清除软删除的项目。
  • 软删除策略不支持异地复制的注册表。
  • ACR 不允许同时启用保留策略和软删除策略。 请参阅未标记清单的保留策略

先决条件

  • 用户需要以下权限(在注册表级别)才能执行软删除操作:
权限 说明
Microsoft.ContainerRegistry/registries/deleted/read 列出软删除的项目
Microsoft.ContainerRegistry/registries/deleted/restore/action 还原软删除的项目
  • 可以使用本地安装的 Azure CLI 来运行本文中的命令示例。 如果想要在本地使用它,则需要使用 2.0.74 版或更高版本。 为版本运行az --version。 如果需要进行安装或升级,请参阅安装 Azure CLI

为注册表启用软删除策略 - CLI

  1. 使用设置为 1 到 90 天的保留期更新给定 MyRegistry ACR 的软删除策略。

    az acr config soft-delete update -r MyRegistry --days 7 --status <enabled/disabled>
    
  2. 显示针对给定 MyRegistry ACR 配置的软删除策略。

    az acr config soft-delete show -r MyRegistry
    

列出软删除的项目 - CLI

使用 az acr repository list-deleted 命令可以提取和列出软删除的存储库。 如需详细信息,请使用 --help

  1. 列出给定 MyRegistry ACR 中软删除的存储库。

    az acr repository list-deleted -n MyRegistry
    

使用 az acr manifest list-deleted 命令可以提取和列出软删除清单。

  1. 列出给定 MyRegistry ACR 中 hello-world 存储库的软删除清单。

    az acr manifest list-deleted -r MyRegistry -n hello-world
    

使用 az acr manifest list-deleted-tags 命令可以提取和列出软删除标记。

  1. 列出给定 MyRegistry ACR 中 hello-world 存储库的软删除标记。

    az acr manifest list-deleted-tags -r MyRegistry -n hello-world
    
  2. 筛选 hello-world 存储库的软删除标记,以匹配给定 MyRegistry ACR 中的标记 latest

    az acr manifest list-deleted-tags -r MyRegistry -n hello-world:latest
    

还原软删除的项目 - CLI

az acr manifest restore 命令按标记和摘要还原单个映像。

  1. 在给定 MyRegistry ACR 中按标记 latest 和摘要 sha256:abc123 还原 hello-world 存储库的映像。

    az acr manifest restore -r MyRegistry -n hello-world:latest -d sha256:abc123
    
  2. 在给定 MyRegistry ACR 中按标记 latest 还原 hello-world 存储库的最近已删除清单。

    az acr manifest restore -r MyRegistry -n hello-world:latest
    

    强制还原会覆盖存储库中同名的现有标记。 如果在强制还原期间启用了软删除策略。 覆盖的标记已软删除。 可以使用特定参数 --force, -f 强制还原。

  3. 在给定 MyRegistry ACR 中按标记 latest 和摘要 sha256:abc123 强制还原 hello-world 存储库的映像。

    az acr manifest restore -r MyRegistry -n hello-world:latest -d sha256:abc123 -f
    

重要

还原清单列表不会以递归方式还原任何已软删除的基础清单。 如果你正在还原软删除的 ORAS 项目,则还原主题不会以递归方式还原引用者链。 此外,必须首先还原主题,然后才能还原引用者清单。 否则会引发错误。

为注册表启用软删除策略 - 门户

还可以在 Azure 门户中启用注册表的软删除策略。

  1. 导航到你的 Azure 容器注册表。

  2. 在“概述”选项卡中,验证“软删除(预览版)”的状态。

  3. 如果“状态”为“已禁用”,请选择“更新”。

    查看软删除策略的屏幕截图。

  4. 选中“启用软删除”复选框。

  5. 选择090天以保留软删除的项目。

  6. 选择“保存” 以保存更改。

    启用软删除策略的屏幕截图。

还原软删除的项目 - 门户

  1. 导航到你的 Azure 容器注册表。

  2. 在“菜单”部分,依次选择“服务”、“存储库”。

  3. 在“存储库”中,选择首选的存储库。

  4. 选择“管理删除的项目”以查看所有软删除的项目。

    注意

    启用软删除策略并执行取消标记清单或删除项目等操作后,可以在保留天数过期之前在“管理已删除的项目”中找到这些标记和项目。

    “管理已删除的项目”的屏幕截图。

  5. 筛选必须还原的已删除项目。

  6. 选择项目,然后在右栏中选择“还原”。

  7. 此时会弹出一个“还原项目”窗口。

    还原软删除项目的屏幕截图。

  8. 选择要还原的标记,在此处可以使用一个选项来选择并恢复任何其他标记。

  9. 选择“还原”。

    “还原”窗口的屏幕截图。

从软删除的存储库还原 - 门户

  1. 导航到你的 Azure 容器注册表。

  2. 在“菜单”部分,选择“服务”。

  3. 在“服务”选项卡中,选择“存储库”。

  4. 在“存储库”选项卡中,选择“管理删除的存储库”。

    “管理已删除的存储库”的屏幕截图。

  5. 在“软删除的存储库(预览版)”中筛选已删除的存储库。

    软删除存储库的屏幕截图。

  6. 选择已删除的存储库,在“管理已删除的项目”中筛选已删除的项目。

  7. 选择项目,然后在右栏中选择“还原”。

  8. 此时会弹出一个“还原项目”窗口。

    还原软删除存储库的屏幕截图。

  9. 选择要还原的标记,在此处可以使用选项以选择并恢复任何其他标记。

  10. 选择“还原”。

    软删除存储库的还原窗口的屏幕截图。

    重要

    将阻止在源和目标资源中导入软删除的映像。 将映像推送到软删除的存储库会还原软删除的存储库。 不允许推送与已软删除映像共享同一清单摘要的映像。 在这种情况下,会还原软删除的映像。

后续步骤