如何清理docker build的缓存

在使用 Docker 构建镜像时,Docker 会利用构建缓存来加速后续的构建过程。如果某一层及其所有上层未发生变化,Docker 就会重用这一层的缓存。虽然这可以显著提升构建速度,但有时你可能希望强制 Docker 忽略缓存,以确保从头开始重新构建,或者你可能想要清理缓存来释放磁盘空间。下面是一些处理 Docker 构建缓存的方法:

强制重新构建镜像(无缓存构建)

如果你的目的是确保 Docker 从头开始构建镜像,而不使用任何缓存层,你可以在构建时添加 --no-cache 参数。这使得 Docker 在构建过程中不会使用任何缓存层,因此可以确保所有内容都是最新的:

sh 复制代码
docker build --no-cache -t myimage:latest .

清理悬空镜像

悬空镜像是指那些不再被任何镜像标签所引用的镜像。在多次构建镜像之后,可能会积累很多这样的镜像。你可以使用以下命令来删除这些悬空镜像,这也会间接清理掉一部分构建缓存:

sh 复制代码
docker image prune

清理未使用的 Docker 资源

Docker 提供了一个更一般的命令来清理未使用的资源,包括:停止的容器、未使用的网络、悬空镜像以及构建缓存。使用以下命令:

sh 复制代码
docker system prune

如果你想要同时清理未被任何容器引用的镜像,可以加上 -a 参数:

sh 复制代码
docker system prune -a

**注意:**这将删除所有未使用的镜像,而不仅仅是悬空镜像。

清理构建缓存

从 Docker 17.07 版本开始,Docker 引入了一个新的命令专门用于清理构建缓存:

sh 复制代码
docker builder prune

这个命令会删除所有未被使用的构建缓存,释放空间。如果你想要更精细的控制,比如删除一定时间之前的缓存,可以使用 --filter 参数,例如:

sh 复制代码
docker builder prune --filter "until=24h"

这个命令会删除 24 小时前创建的所有构建缓存。

结论

根据你的需求,可以通过不同的方式来管理 Docker 的构建缓存。无缓存构建可以确保你的镜像总是用最新的层来构建,而清理命令可以帮你管理磁盘空间,防止构建缓存占用过多的空间。正确地使用这些命令可以让你的 Docker 使用更加高效。

相关推荐
前端炒粉9 小时前
35.LRU 缓存
开发语言·javascript·数据结构·算法·缓存·js
2501_9411421314 小时前
基于 Rust 构建高性能区块链节点与智能合约执行系统的架构设计与工程实践分析
eureka
努力发光的程序员16 小时前
互联网大厂Java面试:从Spring Boot到微服务架构
spring boot·缓存·微服务·消息队列·rabbitmq·spring security·安全框架
zero13_小葵司17 小时前
JavaScript性能优化系列(八)弱网环境体验优化 - 8.3 数据预加载与缓存:提前缓存关键数据
javascript·缓存·性能优化
2501_9411481518 小时前
AI与大数据:推动智慧城市发展的双引擎
eureka
CS_浮鱼18 小时前
【Linux进阶】mmap实战:文件映射、进程通信与LRU缓存
linux·运维·c++·缓存
2501_9411437320 小时前
5G时代的网络安全挑战与解决方案:守护数字未来
eureka
一夜空中最亮的星一21 小时前
【Linux】ubuntu24.04 安装docker
linux·docker·eureka
q***31831 天前
Window下Redis的安装和部署详细图文教程(Redis的安装和可视化工具的使用)
数据库·redis·缓存
会飞的小蛮猪1 天前
Ubuntu24.04基于Docker部署K8s(使用私服部署)
经验分享·docker·云原生·容器·kubernetes