docker build次数过多,导致磁盘内存不足:ERROR: no space left on device

在使用 docker build 构建镜像时,Docker 会创建一个临时的构建上下文,生成镜像的过程中会产生多个中间层。这些文件和层会占用磁盘空间。构建完成后,如果你没有清理这些不再使用的中间层和临时文件,可能会导致磁盘空间不足。

常见原因:

  1. 中间层和缓存 :每次执行 docker build 时,Docker 会缓存每个步骤的中间镜像。默认情况下,这些缓存会被保留下来,以便下次构建时可以重用,从而加速构建过程。如果中间层文件没有清理,这些缓存文件会占用大量磁盘空间。
  2. 构建过程中产生的临时文件:比如复制到容器中的大文件、构建过程中下载的依赖文件等。

解决方法:

注意:以下命令根据实际情况使用,不要误删,否则还得费大量时间重新构建。若只是缓存过多,应该只清除临时文件即可!

1. 清理 Docker 缓存(删除无用镜像、容器、卷)

执行以下命令清理不再使用的镜像、容器、网络和卷:

docker system prune -a

  • -a 选项会删除所有未被使用的镜像,包括构建过程中生成的中间层。
  • 这会清理停止的容器、未使用的镜像、网络和卷。注意:这会删除所有未被使用的镜像,如果你有一些镜像不再使用,执行这个命令会释放大量空间。

你可以逐个确认清理的内容:

docker system df

该命令会显示 Docker 使用的磁盘空间,包括镜像、容器、卷等的使用情况。

2. 删除未使用的镜像

如果你只想删除不再使用的镜像,可以执行:

docker image prune -a

这会删除所有没有被容器使用的镜像,但不会删除当前正在使用的镜像。

3. 删除停止的容器

如果你有停止的容器,你可以通过以下命令删除它们:

docker container prune

4. 清理 Docker 构建缓存

如果你的磁盘空间不够,你还可以删除 Docker 的构建缓存。构建缓存是用来加速 Docker 构建过程的,但是在某些情况下,它可能会占用大量磁盘空间。你可以通过以下命令删除所有构建缓存:

docker builder prune

如果你想删除所有的缓存(包括未使用的),可以加上 -a 选项:

docker builder prune -a

5. 检查 Docker 镜像大小

有时候,镜像本身可能会非常大。你可以使用以下命令检查当前所有镜像的大小:

docker images

6. 删除特定镜像

如果你知道某个镜像不再需要,可以删除它来释放空间:

docker rmi <image_id>

替换 <image_id> 为你想删除的镜像的 ID。

删除出现问题:Error response from daemon: conflict: unable to remove repository reference "xxx" (must force) - container xxx is using its referenced image xxx 请移步下篇文章

相关推荐
梦想的颜色6 小时前
【Docker原理】Docker 容器一文打尽:生命周期、环境管控、迁移备份、日志进程排查、垃圾清理
运维·docker·容器·容器生命周期·容器日志排查·容器迁移备份·容器进程管理
万里侯9 小时前
GitOps 漂移检测:集群里改了配置,Git 还以为一切正常
微服务·容器·k8s
极客先躯13 小时前
高级java每日一道面试题-2026年03月30日-实战篇[Docker]-如何监控容器的网络流量?
java·运维·docker·容器·prometheus·高级面试
Waay14 小时前
Linux 三个核心环境变量配置文件、作用域、生效方式完整梳理
linux·运维·学习·云原生·容器
大E帝国子民115 小时前
Docker 部署 RocketMQ 5
docker·容器·rocketmq
江湖有缘16 小时前
【保姆级教程】使用Docker Compose一键搭建Picsur私有图床服务
java·docker·容器
java_logo19 小时前
5 分钟共享打印机:用 Docker 一键部署 CUPS
运维·docker·容器·cups·网络打印机·共享打印机·docker部署cups
fen_fen19 小时前
Docker部署PostgreSQL10 开启SSL和证书安装文档
docker·容器·ssl
bukeyiwanshui20 小时前
20260626 k8sControllers介绍
云原生·容器·kubernetes
EnCi Zheng21 小时前
N3A-一个端口只能给一个程序使用吗?[特殊字符]
网络·nginx·docker