Docker构建缓存通过分层哈希复用机制加速镜像生成,但指令变更、基础镜像更新等会导致缓存失效;需合理组织Dockerfile、使用.dockerignore,并搭配docker builder prune、image prune -a、system prune -a --volumes --force等命令按需清理,推荐在CI末尾或定时任务中自动化执行。
构建缓存是 Docker 加速镜像生成的核心机制,用得好能大幅缩短 CI/CD 时间,用不好反而会堆积大量无效层、拖慢系统甚至引发磁盘爆满。关键不在“要不要用”,而在于“怎么用得准、清得稳”。
Docker 构建时,每条 Dockerfile 指令(如 FROM、RUN、COPY)都会生成一个只读层,并基于内容哈希唯一标识。只要基础镜像相同、当前指令及之前所有指令完全一致,就复用已有层——这就是缓存命中。
不是所有写法都利于缓存复用。合理组织 Dockerfile 是低成本提效的关键:
不同命令作用范围不同,误用可能删掉正在运行的服务依赖。按需选择:
执行前可用 docker system df 查看各类型资源占用,用 docker builder prune --dry-run 预览将删内容。
人工清理容易遗漏,尤其在 CI 环境中高频构建时。推荐嵌入标准流程:
docker-compose down --rmi local && docker builder prune -f(停服务 + 清本地构建镜像 + 清构建缓存)0 3 * * * /usr/bin/docker builder prune -f && /usr/bin/docker image prune -f
--progress=plain 观察缓存命中情况,便于诊断问题