Docker 镜像清理怎么在持续集成服务器上自动化管理存储配额

老墨小哥_4360

老墨小哥_4360

2026-10-28

360人浏览

原创

自动化Docker镜像配额管理需分级响应磁盘水位:>80%删非latest镜像,>90%删未引用镜像并清理builder,>95%慎用system prune;结合CI流水线清理、label保护机制及定期归档至对象存储。

在持续集成服务器上自动化管理 docker 镜像存储配额,核心不是“一刀切删光”,而是建立一套响应式、可预测、带策略的清理机制。重点在于:监控磁盘水位 → 触发对应强度的清理动作 → 保留关键镜像(如 latest、prod 标签)→ 避免影响正在运行或即将构建的任务。

按磁盘使用率分级触发清理

这是最实用、最稳妥的配额管理方式。不依赖时间或标签数量,而是根据真实资源压力动态响应:

  • >80% 使用率:只清理非 latest 标签的镜像(保留每个镜像的最新版本)
  • >90% 使用率:进一步清理所有未被任何容器引用的镜像(包括有标签但闲置的),同时执行 docker builder prune
  • >95% 使用率:启用紧急模式,强制 docker system prune -a --volumes --force(慎用,建议加白名单保护生产镜像)

可将该逻辑写入 shell 脚本,并通过 cron 每 10 分钟检查一次:

#!/bin/bash
USAGE=$(df /var/lib/docker | awk 'NR==2 {print $5}' | sed 's/%//')
if [ "$USAGE" -gt 90 ]; then
  docker image prune -a -f --filter "label!=protected=prod"
  docker builder prune -f
elif [ "$USAGE" -gt 80 ]; then
  docker images --format "{{.Repository}}:{{.Tag}}" | grep -v ":latest$" | xargs -r docker rmi 2>/dev/null
fi

绑定 CI 流水线生命周期清理

让清理动作成为构建流程的一部分,而非后台“偷偷干”。在 Jenkins、GitHub Actions 或 GitLab CI 的 post-build 阶段加入清理步骤:

  • 构建成功后,自动删除本次构建生成的临时标签(如 pr-123、feature/login-v2)
  • 若本次构建打上了 dev 标签,则自动清理 7 天前的其他 dev 标签
  • 对测试环境镜像加 label(如 docker build --label env=test ...),后续统一按 label 清理

示例(GitHub Actions):

Docker Encyclopedia
Docker Encyclopedia

Docker 文档优先工作流:针对 Docker 特定问题、故障排除、命令规划、镜像/构建、容器/运行时操作及 Compose 等

下载
- name: Cleanup old dev images
  if: github.event_name == 'push' && startsWith(github.head_ref, 'dev/')
  run: |
    docker images --filter "label=env=test" --format "{{.Repository}}:{{.Tag}}" | \
      sort -V | head -n -7 | xargs -r docker rmi

为关键镜像设置保护机制

避免误删导致部署中断。可通过以下任一方式标记“不可删”镜像:

  • 使用 --label protected=prod 构建生产镜像,清理脚本中跳过带该 label 的镜像
  • 固定保留 :latest 和 :vX.Y.Z(语义化版本)标签,用正则过滤掉 .*-dev-.*、.*-test-.* 等非正式标签
  • 在 Harbor/Nexus 等仓库中配置 retention 策略,例如:keep last 5 images for tags matching "prod-*"

定期归档与外部存储协同

彻底解决配额问题,不能只靠“删”,还要考虑“移”:

  • 每月将符合归档条件的镜像(如已上线 90 天、无容器引用、无安全漏洞)导出为 tar 包,存至对象存储(如 S3、MinIO)
  • 本地仅保留最近 30 天活跃镜像,其余全部归档 + 本地清理
  • 归档脚本可结合 docker save + aws s3 cp + docker image rm 三步完成

这样既满足审计与回滚需求,又把本地存储控制在硬性配额内。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

457

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

960

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

3212

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

1056

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

949

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

494

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

2936

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

5512

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

847

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpMyAdmin 安装文档
phpMyAdmin 安装文档

共0课时 | 0人学习

Docker 官方文档
Docker 官方文档

共0课时 | 0人学习

宝塔 Docker 模块使用手册
宝塔 Docker 模块使用手册

共0课时 | 0人学习