Linux怎么清理Docker空间_Linux如何删除无用镜像容器【技巧】

阿枫大大_2850

阿枫大大_2850

2026-04-01

596人浏览

原创

docker system prune 是最安全的“一键清理”入口,仅删除已停止容器、悬挂镜像和未被引用的构建缓存,不触运行中资源,执行前交互确认,加 -f 可跳过,但不清理 volume(需显式加 --volumes)。

linux怎么清理docker空间_linux如何删除无用镜像容器【技巧】

docker system prune 是最安全的“一键清理”入口

想快速释放磁盘空间,又怕误删正在用的东西?docker system prune 就是为此设计的默认守门员——它只动真正闲置的资源,不碰运行中或有依赖的容器、镜像、网络和构建缓存。

  • 默认行为:删除所有已停止的容器、所有悬挂镜像(dangling=true)、所有未被容器引用的构建缓存
  • 不会删除:正在运行的容器、有标签且被某容器引用的镜像、用户显式创建的网络或卷
  • 执行前会交互确认,加 -f 可跳过(例如:docker system prune -f)
  • 注意:它不清理 volume(除非加 --volumes),因为卷常含业务数据,Docker 默认不敢动

docker image prune -a 能清掉“没被任何容器用”的所有镜像

你执行过 docker images 后发现一堆带 <none></none> 标签的镜像,或者反复 build 生成了大量旧版本镜像?docker image prune -a 就是专治这类“无主镜像”的命令。

  • docker image prune 默认只删悬挂镜像(dangling);加 -a 才扩展到所有未被当前任何容器(无论运行/停止)引用的镜像
  • 常见误判点:某个镜像虽没容器在用,但它是另一个镜像的父层(比如 ubuntu:22.04 是你自定义镜像的基础),此时它仍会被保留——Docker 的分层机制会自动保护共享层
  • 如果想连“一小时前建的镜像”都不要,可加过滤:docker image prune -a -f --filter "until=1h"

强制删镜像前,先查谁在用它:避免 “conflict: unable to delete”

执行 docker rmi 报错 Error response from daemon: conflict: unable to delete ...: conflict: unable to delete ... (must be forced)?这不是权限问题,而是镜像正被某个容器(哪怕是已退出的)引用着。

  • 先查谁在依赖它:docker ps -a --filter "ancestor=<image-id-or-name>" --format "{{.ID}} {{.Status}} {{.Names}}"</image-id-or-name>
  • 若返回结果,说明有容器基于该镜像创建过——哪怕已 Exited,rmi 仍会拒绝(防止误删导致无法 start)
  • 稳妥做法:先 docker rm 掉那些已退出的容器(docker rm $(docker ps -q -f status=exited)),再试 rmi
  • 真要绕过检查?加 -f:但后果是——如果还有运行中容器用它,docker start 会失败,别怪命令没提醒你

彻底清空?小心 /var/lib/docker 里的“硬核残留”

跑完 system prune 还剩几十个 GB?可能是构建缓存、匿名卷、或被 docker load 进来的离线镜像没走标准流程,躲过了 prune 检测。

  • docker system df 是你的第一双眼睛:它会分块显示 Images、Containers、Local Volumes、Build Cache 各占多少,精准定位胖头在哪
  • 构建缓存特别能吃空间:docker builder prune(或 docker buildx prune,取决于你用的 builder)可单独清它
  • 卷(volume)不随容器删而删,docker volume ls + docker volume rm 才能动手;但务必确认里面没数据库文件、日志或上传内容
  • 极端情况(如重装 Docker 前)才建议手动删 /var/lib/docker:这会干掉所有镜像、容器、卷、网络,且不可逆——systemctl stop docker 必须先做,否则文件系统可能损坏

真正难的不是命令记不住,而是分不清“这个镜像到底还有没有容器在逻辑上依赖它”。Docker 的分层和引用计数藏得深,docker system df -v 和 docker image inspect 多看两眼,比盲目 rmi -f 省三天排障时间。

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.31

1669

3

python中的format是什么意思
python中的format是什么意思

python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.06.27

1211

7

scripterror怎么解决
scripterror怎么解决

scripterror的解决办法有检查语法、文件路径、检查网络连接、浏览器兼容性、使用try-catch语句、使用开发者工具进行调试、更新浏览器和JavaScript库或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

949

5

500error怎么解决
500error怎么解决

500error的解决办法有检查服务器日志、检查代码、检查服务器配置、更新软件版本、重新启动服务、调试代码和寻求帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.25

2660

5

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

2023.07.18

5247

5

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

2023.08.10

2308

6

数据库Delete用法
数据库Delete用法

数据库Delete用法:1、删除单条记录;2、删除多条记录;3、删除所有记录;4、删除特定条件的记录。更多关于数据库Delete的内容,大家可以访问下面的文章。

2023.11.13

2731

4

drop和delete的区别
drop和delete的区别

drop和delete的区别:1、功能与用途;2、操作对象;3、可逆性;4、空间释放;5、执行速度与效率;6、与其他命令的交互;7、影响的持久性;8、语法和执行;9、触发器与约束;10、事务处理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.12.29

845

3

k8s和docker区别
k8s和docker区别

k8s和docker区别有抽象层次不同、管理范围不同、功能不同、应用程序生命周期管理不同、缩放能力不同、高可用性等等区别。本专题为大家提供k8s和docker区别相关的各种文章、以及下载和课程。

2023.07.24

685

4

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.4万人学习