本文目录导读:

这里有几个自动清理 Docker build 缓存的脚本方案,根据你的使用场景选择:
基础清理脚本(最常用)
#!/bin/bash # docker-cleanup.sh echo "🔍 开始清理 Docker Build 缓存..." # 显示当前缓存大小(可选) echo "当前 build 缓存大小:" docker system df echo "🗑️ 清理 build 缓存..." # 清理所有未使用的 build 缓存 docker builder prune -a -f # 额外清理:移除所有未使用的容器、网络、镜像(慎用) # docker system prune -a -f echo "✅ 清理完成!" echo "" echo "清理后磁盘使用情况:" docker system df
保留最近 N 小时的缓存
#!/bin/bash
# docker-cleanup-recent.sh
# 保留最近24小时的缓存,清理更早的
HOURS=24
echo "🕐 清理 ${HOURS} 小时前的 build 缓存..."
# 清理超过指定时间的缓存
docker builder prune --filter "until=${HOURS}h" -f
echo "✅ 清理完成"
自动清理 + 日志记录
#!/bin/bash
# docker-cleanup-with-log.sh
LOG_FILE="/var/log/docker-cleanup.log"
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
echo "[${TIMESTAMP}] 开始清理 Docker build 缓存" | tee -a ${LOG_FILE}
# 记录清理前的状态
echo "清理前磁盘使用:" | tee -a ${LOG_FILE}
docker system df >> ${LOG_FILE}
# 执行清理
echo "正在清理..." | tee -a ${LOG_FILE}
docker builder prune -a -f >> ${LOG_FILE} 2>&1
# 记录清理后的状态
echo "清理后磁盘使用:" | tee -a ${LOG_FILE}
docker system df >> ${LOG_FILE}
echo "[${TIMESTAMP}] 清理完成" | tee -a ${LOG_FILE}
echo "----------------------------------------" >> ${LOG_FILE}
带参数的高级版本
#!/bin/bash
# docker-cleanup-advanced.sh
usage() {
echo "用法: $0 [选项]"
echo "选项:"
echo " -a, --all 清理所有 build 缓存"
echo " -d, --days N 清理 N 天前的缓存"
echo " -f, --force 强制清理(跳过确认)"
echo " -v, --verbose 显示详细信息"
exit 1
}
ALL=false
DAYS=""
FORCE=false
VERBOSE=false
while [[ $# -gt 0 ]]; do
case $1 in
-a|--all)
ALL=true
shift
;;
-d|--days)
DAYS="$2"
shift 2
;;
-f|--force)
FORCE=true
shift
;;
-v|--verbose)
VERBOSE=true
shift
;;
*)
usage
;;
esac
done
echo "🐳 Docker Build 缓存清理工具"
echo "================================"
if [ "$VERBOSE" = true ]; then
echo "当前 build 缓存状态:"
docker system df | head -n 10
echo ""
fi
if [ "$ALL" = true ]; then
echo "🗑️ 清理所有 build 缓存..."
if [ "$FORCE" = true ]; then
docker builder prune -a -f
else
docker builder prune -a
fi
elif [ -n "$DAYS" ]; then
echo "🗑️ 清理 ${DAYS} 天前的 build 缓存..."
docker builder prune --filter "until=${DAYS}d" -f
else
echo "🗑️ 清理未使用的 build 缓存..."
docker builder prune -f
fi
echo "✅ 清理完成"
定时任务脚本(配合 cron)
#!/bin/bash
# docker-cleanup-cron.sh
# 配合 cron 定时执行
# 每隔2小时清理一次过期的缓存
# 0 */2 * * * /path/to/docker-cleanup-cron.sh
MAX_CACHE_AGE=2 # 保留最近2小时的缓存
docker builder prune --filter "until=${MAX_CACHE_AGE}h" -f > /dev/null 2>&1
# 每周日凌晨3点清理所有缓存
if [ "$(date +%u)" -eq 7 ] && [ "$(date +%H)" -eq 3 ]; then
docker builder prune -a -f > /dev/null 2>&1
fi
使用方式
-
保存脚本:
nano docker-cleanup.sh -
添加执行权限:
chmod +x docker-cleanup.sh -
运行脚本:
# 基础清理 ./docker-cleanup.sh # 高级版本 ./docker-cleanup-advanced.sh -a -v ./docker-cleanup-advanced.sh -d 7
-
设置定时任务(可选):
crontab -e # 添加以下行:每天凌晨2点清理 0 2 * * * /path/to/docker-cleanup.sh
注意事项
- 谨慎使用
-a参数:会删除所有 build 缓存,包括正在使用的,下次构建时会重新下载依赖 - CI/CD 环境建议:保留至少最近几小时的缓存,加速构建
- 生产环境:使用带日志记录的版本,方便排查问题
选择哪个脚本取决于你的具体需求,建议从基础版本开始,逐步完善。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播