镜像老化
操作场景
现代软件开发多采用流水线生成镜像,随着版本不断向前迭代,将会不断生成新的镜像版本。新版本镜像的生成意味着老旧版本的镜像变得不再需要,如何方便快速的删除这些老旧版本镜像成为了新的问题。容器镜像服务企业版提供镜像老化功能,您可以创建镜像老化规则,手动或定时触发该规则,根据规则老化删除不需要的镜像。镜像老化规则支持多个老化子规则组合生效。
约束与限制
每个命名空间下仅允许创建1个老化规则,每个老化规则至少包含1个子规则,至多包含15个子规则。
创建老化规则
- 登录容器镜像服务控制台,单击左侧菜单栏“企业版”,然后单击仓库名称进入仓库详情页面。
- 在左侧导航栏选择“运维中心 > 镜像老化”。
- 在右上角单击“创建老化规则”。
- 填写具体规则。
表1 参数说明 参数名称
说明
示例
规则名称
老化规则的名称。
AgingRule
命名空间
选择要老化的镜像所在的命名空间。
library1
触发模式
- 手动:手动触发,规则创建完成后需要您手动单击执行。
- 定时 + 手动:定时即为设置周期性定时老化。
定时 + 手动
定时
触发模式为“定时 + 手动”时可以设置。
-
子规则范围(镜像)
有如下两种模式:
nginx-*
子规则范围(版本)
镜像的版本,同样使用正则表达式匹配。
正则表达式规则可填写如 v1* ,{v1,v2} 等。
- *:匹配不包含路径分隔符“/”的任何字段。
- **:匹配包含路径分隔符“/”的任何字段。
- ?:匹配任何单个非“/”的字符。
- {v1,v2, ...}:同时匹配多个版本。
v1
老化条件
选择执行的老化条件,有如下条件可选择:
- 保留最近推送的#个镜像版本
- 保留最近拉取的#个镜像版本
- 保留最近#天被推送过的
- 保留最近#天被拉取过的
其中“#”为变量,为具体的版本数和保留天数,请自行设置。
保留最近推送的10个镜像版本
启用
可启用或不启用本条老化子规则
-
操作
可删除本条老化子规则
-
图1 创建老化规则
- 单击“确定”完成规则创建。
老化规则示例
- 示例1:
选择library命名空间中,匹配所有版本的所有镜像,保留符合最近推送的2个与最近拉取的5个的并集条件的镜像,其余镜像删除,且需要手动触发执行。
示例解读:假设library命名空间空间下有10个镜像Image1 ~ Image10,其中Image9和Image10是最近推送的2个镜像,Image1~Image5是最近拉取的5个镜像,那么保留的就是Image1~Image5以及Image9和Image10,老化的是Image6~Image8。
- 示例2:
选择library命名空间中,demo-image-v8和demo-image-v7保留最近3天被推送过的所有版本的镜像以及demo-image-v6和demo-image-v5保留最近1天被拉取过的镜像所有版本的镜像的并集,其余镜像全部删除,该规则每月1号 0时0分定时执行,且可以手动触发执行。
管理老化规则
成功创建后即可在“镜像老化”页面查看已创建的老化规则,您可以执行以下操作管理老化规则。
- 执行:真实执行。为避免误操作,建议在首次执行老化规则前模拟执行。
- 模拟:模拟执行。可用于确认规则是否生效,但不实际清理镜像版本。
- 编辑:重新编辑老化规则,除“命名空间”外,其余参数均可编辑。
- 删除:删除该老化规则。
- 查看老化任务:当老化规则被触发时,符合规则范围的镜像将被删除。老化任务包含的信息如下:
表2 老化任务 参数
说明
触发模式
手动或自动。
单击“执行”或“模拟”为手动方式,通过规则定义的周期自动执行,则为自动方式。
状态
任务完成状态。
模拟
是或否。
单击“模拟”则为是,单击“执行”则为否。模拟可用于确认规则是否生效,但不实际清理镜像版本。
老化数
老化删除了多少个镜像,这里是按照镜像版本统计不是镜像制品。
创建时间
老化任务被触发的时间。
结束时间
老化任务执行结束的时间。
老化信息
老化了哪个命名空间下的哪些版本的镜像,删除是否成功。
图3 任务详情