SuperAPI AI 工具集

linux-image-hygiene

部署与运维

查看项目

更新于 10-16 08:04

技能介绍

该技能用于容器宿主机的磁盘回收,适用于 /var/lib/docker 或容器存储被占满、需要清理悬空镜像、已停止容器、未使用卷/网络和构建缓存,以及用 systemd timer 安排定期清理的场景。不负责安装或配置引擎(用 linux-container-engine)、运行或监管容器(用 linux-container-deployment)、容器之外的通用磁盘排查(用 linux-disk-storage)。

必要输入包括:引擎与执行用户、存储根、压力目标;使用 -a 或卷时需对象归属与保留策略;破坏性操作需批准的范围与回滚或重新拉取方案。

用法上先用 docker system df 或 podman system df(-v 看明细)测量可回收量,再按从轻到重清理:docker image prune(仅悬空)、docker system prune(停止容器+悬空镜像+未用网络+构建缓存)、docker image prune -a(所有未被运行容器使用的镜像,可加 --filter 'until=720h')、docker system prune -a --volumes(含具名卷,破坏性最大);也可定向使用 docker container prune、docker volume prune、docker network prune、docker builder prune。Podman 命令面相同,如 podman image prune -a、podman system prune -a --volumes。Debian/Ubuntu 常用 Docker,RHEL 系常用 Podman;rootless Podman 存储位于 ~/.local/share/containers/storage,root 执行 docker system prune 不会清理它,需以所属用户运行 podman system prune。

定期清理可用 systemd timer:系统级用 container-prune.service 与 container-prune.timer(OnCalendar、Persistent),执行 systemctl daemon-reload 与 systemctl enable --now container-prune.timer;rootless 用 systemctl --user 配合 loginctl enable-linger。可选快捷脚本:sudo install-skills-bin linux-image-hygiene 安装 sk-container-prune,可报告可回收空间、按范围清理并在每步前询问、可安装每日 timer;脚本为可选封装,docker/podman 原生命令为准。

限制与注意事项:测量与候选列表为只读,每次 prune 都是破坏性的,--volumes 另需数据所有者确认,定时清理需有创建和启用单元的权限。无引擎访问时只返回测量命令;无法确认归属时不得判定为未使用;无法测量回收量时结果应标记为未验证。卷含数据,默认排除;不得将“未使用”视为“无主”;不能把估算节省当作实际回收;不应在含数据库或有状态主机上无人值守地自动执行 -a --volumes。该技能自述为自包含,具体过滤器语义与存储布局细节另见其 references/prune-and-scheduling.md。