docker-cleanup部署指南:用Systemd构建Linux服务器定时自动清理服务
docker-cleanup部署指南用Systemd构建Linux服务器定时自动清理服务【免费下载链接】docker-cleanupDEPRECATED Automatic Docker image, container and volume cleanup项目地址: https://gitcode.com/gh_mirrors/do/docker-cleanupdocker-cleanup 是一个开源的Docker 自动清理工具它会周期性扫描 Linux 服务器自动清理已退出的容器、无人使用的镜像和孤立的卷专门解决Docker 越用越多、磁盘空间被悄悄占满这一常见痛点。本文将带你从零完成 docker-cleanup 部署先用一条命令快速试用再用 Systemd 把它变成开机自启、定时运行的后台清理服务。⚠️使用提示该项目目前标记为 DEPRECATED不再活跃维护核心思路依然实用生产环境部署前请仔细阅读后文的安全注意事项。如果你使用的是较新版本 Docker也可以先了解官方自带的docker system prune命令作为对照。为什么需要 Docker 自动清理工具在 Linux 服务器上长期运行 Docker磁盘膨胀几乎是必然的已退出容器堆积容器退出后默认仍保留在磁盘上需要手动docker rm才能移除旧版本镜像残留不断升级应用后旧镜像一直躺在仓库里未标记镜像泛滥Jenkins 构建节点、CI 集群上反复构建会留下大量none幽灵镜像孤立卷膨胀容器删除时未加-v数据卷会一直保留。docker-cleanup 的清理逻辑由 run.sh 实现它按轮询循环依次执行清理未使用的卷 → 删除已退出/死亡容器 → 移除无用镜像整个过程全自动、无需人工值守。第一步一条命令快速试用 docker-cleanup部署前先手动跑一次确认清理行为符合预期。由于脚本通过 Docker 客户端命令操作宿主机必须挂载 Docker 套接字docker run \ -v /var/run/docker.sock:/var/run/docker.sock:rw \ -v /var/lib/docker:/var/lib/docker:rw \ meltwater/docker-cleanup:latest⚠️ 注意第二条挂载一旦映射/var/lib/docker脚本还会连带清理孤立的 Docker 卷。只试清理容器和镜像时可以只挂第一条。运行一次后观察输出看到类似Done! X images and Y layers have been cleaned的提示说明工作正常。第二步用 Systemd 构建定时自动清理服务想让它无人值守最佳实践是把 docker-cleanup 注册为 Systemd 服务实现开机自启 崩溃自动重启 按固定周期循环清理。1. 创建 Systemd 服务单元文件在/etc/systemd/system/docker-cleanup.service写入以下内容参考官方 README 提供的模板[Unit] DescriptionCleanup of exited containers and unused images/volumes Afterdocker.service Requiresdocker.service [Install] WantedBymulti-user.target [Service] EnvironmentIMAGEmeltwater/docker-cleanup:latest NAMEdocker-cleanup # Allow docker pull to take some time TimeoutStartSec600 # Restart on failures KillModenone Restartalways RestartSec15 ExecStartPre-/usr/bin/docker kill $NAME ExecStartPre-/usr/bin/docker rm $NAME ExecStartPre-/bin/sh -c if ! docker images | tr -s : | grep ^${IMAGE}:; then docker pull ${IMAGE}; fi ExecStart/usr/bin/docker run \ -v /var/run/docker.sock:/var/run/docker.sock:rw \ -v /var/lib/docker:/var/lib/docker:rw \ --name${NAME} \ $IMAGE ExecStop/usr/bin/docker stop $NAME这段配置的几个要点RestartalwaysRestartSec15服务异常退出后 15 秒自动拉起保证清理任务长期存活ExecStartPre三条命令启动前先清理同名旧容器并检查本地镜像、缺失时自动拉取避免重复docker pullAfterdocker.serviceRequiresdocker.service确保 Docker 引擎先于清理服务启动。2. 启用并启动服务sudo systemctl daemon-reload # 重新加载单元文件 sudo systemctl enable docker-cleanup # 设置开机自启 sudo systemctl start docker-cleanup # 立即启动3. 验证服务状态systemctl status docker-cleanup # 查看服务是否 running journalctl -u docker-cleanup -f # 实时查看清理日志日志里会周期性出现Run the clean script every 1800 seconds and delay 1800 seconds to clean这样的提示说明定时循环已生效。第三步用环境变量微调清理策略所有参数都可以通过环境变量覆盖在 Systemd 单元的Environment中添加即可完整清单见 Dockerfile 和 env.list变量默认值作用CLEAN_PERIOD1800两轮清理之间的间隔秒默认 30 分钟DELAY_TIME1800扫描完成到真正删除前的缓冲等待秒避免误删正在操作的对象KEEP_IMAGES空需要豁免的镜像列表如ubuntu:trusty, ubuntu:latestKEEP_CONTAINERS空需要豁免的容器镜像列表KEEP_CONTAINERS_NAMED空需要豁免的容器名称列表LOOPtrue设为false则只清理一次就退出适合配合 crontab 使用DEBUG0设为 1 输出匹配调试信息DOCKER_API_VERSION1.20Docker API 版本可用docker version查看宿主机版本后覆盖两个实用技巧排除重要资源把不允许被删的镜像加入白名单例如EnvironmentKEEP_IMAGESmysql:8.0,redis:latest。白名单使用左锚定的 shell 模式匹配不是正则foo/bar:tag会被foo/bar、*:tag等模式匹配到全量保镜像若想完全跳过镜像清理用KEEP_IMAGES*:*注意不要只用*那会被当作文件名匹配。安全注意事项部署前必读挂载/var/lib/docker风险最高这会开启卷清理清理脚本会直接操作宿主机 Docker 数据目录。官方警告若与你的系统或 Docker 版本不兼容极端情况下可能误删卷数据生产环境请务必先备份或先在测试机验证只清理退出状态运行中容器不受影响但已退出容器中的数据会随docker rm -v一并删除需要保留现场排查的容器请用KEEP_CONTAINERS_NAMED排除项目已停止维护对 Docker 1.13 以上版本卷清理自动改用原生docker volume rm更老的版本走 docker-cleanup-volumes.sh基于 chadoe 的清理脚本见 docker-cleanup-volumes-LICENSE.md保留退出缓冲DELAY_TIME是重要的安全阀不建议设为 0防止刚扫描就删除撞上正在拉取镜像的操作。其他部署方式除了 Systemd项目还支持两种常见场景Kubernetes 集群DaemonSet 全节点部署仓库提供了 contrib/k8s-daemonset.yml让每个集群节点都运行一个清理容器内置CLEAN_PERIOD60、DELAY_TIME1800的环境变量配置kubectl create -f contrib/k8s-daemonset.yml从源码构建镜像如果想基于源码二次开发例如修改轮询逻辑可以克隆仓库后用自带的 Makefile 构建git clone https://gitcode.com/gh_mirrors/do/docker-cleanup cd docker-cleanup make build # 构建 meltwater/docker-cleanup 镜像Makefile 还提供了make run、make restart、make int进入容器调试等常用命令运行make help可查看完整菜单。常见问题速查Q如何只清理一次而不常驻设置LOOPfalse脚本完成一轮清理后自行退出配合 crontab 即可实现每天凌晨清一次的效果。Q如何确认某个镜像/容器为什么没被删设置DEBUG1日志会打印每个对象的模式匹配过程Matches ... keeping/No match。Q如何临时停止自动清理sudo systemctl stop docker-cleanup彻底卸载则再执行sudo systemctl disable docker-cleanup并删除单元文件。总结步骤命令/操作目的试用docker run -v /var/run/docker.sock:...验证清理效果部署创建/etc/systemd/system/docker-cleanup.service开机自启 崩溃自恢复调参CLEAN_PERIOD/KEEP_IMAGES等环境变量定制清理周期与白名单验证journalctl -u docker-cleanup -f跟踪清理日志docker-cleanup 的精髓在于挂载 Docker 套接字 循环清理的极简设计配合 Systemd 只需不到 20 行配置就能让 Linux 服务器的磁盘空间始终保持健康。即使项目已停止维护这套方案依然是搭建 Docker 定时自动清理服务的经典参考。【免费下载链接】docker-cleanupDEPRECATED Automatic Docker image, container and volume cleanup项目地址: https://gitcode.com/gh_mirrors/do/docker-cleanup创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

external-snapshotter升级迁移完全指南:v1beta1到v1的转换之路与必须避开的5个坑

external-snapshotter升级迁移完全指南:v1beta1到v1的转换之路与必须避开的5个坑

external-snapshotter升级迁移完全指南:v1beta1到v1的转换之路与必须避开的5个坑 【免费下载链接】external-snapshotter Sidecar container that watches Kubernetes Snapshot CRD objects and triggers CreateSnapshot/DeleteSnapshot against a CSI endpoint. …

2026/8/25 2:04:44 阅读更多 →
unwxapkg 快速上手:3 步解包微信小程序 .wxapkg 文件,源码资源一次拿全

unwxapkg 快速上手:3 步解包微信小程序 .wxapkg 文件,源码资源一次拿全

unwxapkg 快速上手:3 步解包微信小程序 .wxapkg 文件,源码资源一次拿全 【免费下载链接】unwxapkg WeChat applet .wxapkg decoding tool 项目地址: https://gitcode.com/gh_mirrors/un/unwxapkg 拿到一个微信小程序的 .wxapkg 包,却不…

2026/8/23 17:43:41 阅读更多 →
Katapult配置项全清单:menuconfig中USB ID、CAN总线速率与状态LED如何正确设置

Katapult配置项全清单:menuconfig中USB ID、CAN总线速率与状态LED如何正确设置

Katapult配置项全清单:menuconfig中USB ID、CAN总线速率与状态LED如何正确设置 【免费下载链接】katapult Configurable bootloader for Klipper 项目地址: https://gitcode.com/gh_mirrors/ka/katapult Katapult 是 Klipper 3D 打印机固件的可配置 ARM 引导…

2026/8/23 21:09:56 阅读更多 →

最新新闻

UMA 模型实战指南:一个模型覆盖 7 个任务的原子能量与力预测

UMA 模型实战指南:一个模型覆盖 7 个任务的原子能量与力预测

UMA 模型实战指南:一个模型覆盖 7 个任务的原子能量与力预测 【免费下载链接】ocp FAIR Chemistrys library of machine learning methods for chemistry 项目地址: https://gitcode.com/GitHub_Trending/oc/ocp DFT 逐结构计算,上千个候选筛一遍…

2026/8/25 9:12:04 阅读更多 →
字节跳动高频面试题解析与备考策略

字节跳动高频面试题解析与备考策略

1. 项目背景与核心价值作为国内头部互联网企业的技术面试题库,"字节跳动高频题专章"一直是求职者关注的焦点资源。这个题库汇集了近三年字节跳动各技术岗位(前端、后端、算法等)面试中出现频率最高的题目,包含完整的解题…

2026/8/25 9:12:04 阅读更多 →
Django Ninja CRUD DeleteView 实战教程:5分钟搞定 pre_delete/post_delete 钩子与嵌套路由设计

Django Ninja CRUD DeleteView 实战教程:5分钟搞定 pre_delete/post_delete 钩子与嵌套路由设计

Django Ninja CRUD DeleteView 实战教程:5分钟搞定 pre_delete/post_delete 钩子与嵌套路由设计 【免费下载链接】django-ninja-crud 🧩 Modular, composable API views for scalable Django Ninja projects, with built-in CRUD. 项目地址: https://g…

2026/8/25 9:12:04 阅读更多 →
FinBERT情感分析实战教程:3行代码让金融新闻与报告自动输出正面、负面、中性

FinBERT情感分析实战教程:3行代码让金融新闻与报告自动输出正面、负面、中性

FinBERT情感分析实战教程:3行代码让金融新闻与报告自动输出正面、负面、中性 【免费下载链接】FinBERT A Pretrained BERT Model for Financial Communications. https://arxiv.org/abs/2006.08097 项目地址: https://gitcode.com/gh_mirrors/finbe/FinBERT …

2026/8/25 9:12:04 阅读更多 →
Biomni|生物医学研究从自然语言到可执行代码的实战路径

Biomni|生物医学研究从自然语言到可执行代码的实战路径

Biomni|生物医学研究从自然语言到可执行代码的实战路径 【免费下载链接】Biomni Biomni: a general-purpose biomedical AI agent 项目地址: https://gitcode.com/GitHub_Trending/bi/Biomni Biomni 是一个通用生物医学 AI 智能体:你用一句自然语…

2026/8/25 9:12:04 阅读更多 →
2026年AI驱动的软件测试面试全攻略

2026年AI驱动的软件测试面试全攻略

1. 2026年软件测试面试全景分析2026年的软件测试领域正在经历一场由AI驱动的技术变革。作为从业12年的测试老兵,我见证了从纯手工测试到自动化测试,再到如今AI测试的演进历程。今年的面试题明显呈现出三个特征:传统测试理论依然重要但占比下降…

2026/8/25 9:11:04 阅读更多 →

日新闻

洛谷 P7912:[CSP-J 2021 T4] 小熊的果篮 ← 双向链表

洛谷 P7912:[CSP-J 2021 T4] 小熊的果篮 ← 双向链表

【题目来源】 https://www.luogu.com.cn/problem/P7912 【题目描述】 小熊的水果店里摆放着一排 n 个水果。每个水果只可能是苹果或桔子,从左到右依次用正整数 1,2,…,n 编号。连续排在一起的同一种水果称为一个“块”。小熊要把这一排水果挑到若干个果篮里&#x…

2026/8/25 0:00:34 阅读更多 →
Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG

Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG

Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG 【免费下载链接】transformers.js State-of-the-art Machine Learning for the web. Run 🤗 Transformers directly in your browser, with no need for a server! 项目地址: https:/…

2026/8/25 0:00:34 阅读更多 →
数学建模竞赛论文写作指南:从模型构建到学术表达的核心技能

数学建模竞赛论文写作指南:从模型构建到学术表达的核心技能

1. 项目概述:从“会做”到“会写”的竞赛核心跃迁“全国大学生数学建模竞赛”,这个名字对理工科学生来说,分量极重。每年,无数团队在三天三夜的时间里,为一个开放性问题绞尽脑汁,从建立模型、求解算法到编程…

2026/8/25 0:00:34 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/25 3:38:12 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/25 3:38:18 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/25 3:38:23 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/24 20:22:44 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/23 12:10:44 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/24 11:20:22 阅读更多 →