如何清理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 使用更加高效。

相关推荐
小嘟嘟132 小时前
Kurator深度解析:云原生多集群管理的高效解决方案
linux·运维·docker·云原生·自动化
java_logo2 小时前
TDengine Docker 容器化部署指南
大数据·docker·tdengine·docker tdengine·tdengine部署教程·tdengine部署文档·tdengine部署
暴富暴富暴富啦啦啦2 小时前
Map 缓存和拿取
前端·javascript·缓存
在路上看风景2 小时前
02. 缓存行
缓存
Cat God 0072 小时前
基于Docker搭建kafka集群
docker·容器·kafka
济南java开发,求内推2 小时前
docker 安装fastdfs
docker·fastdfs
Cat God 0072 小时前
基于 Docker 部署 Kafka(KRaft + SASL/PLAIN 认证)
docker·容器·kafka
源图客2 小时前
Nacos3.1.1部署(Docker)
运维·docker·容器
howard20053 小时前
Docker实战:利用commit命令构建镜像
docker·commit·构建新镜像
从零开始学习人工智能3 小时前
《8076 能通 9003 却超时?一次 Docker 容器跨网段排障小记》
运维·docker·容器