立即执行docker image prune -f清除所有无标签镜像,并用docker rm $(docker ps -q -f status=exited)批量删除已退出容器,二者可快速释放磁盘空间且不影响运行服务。

Linux系统磁盘空间被Docker无用的无标签镜像和已退出容器持续蚕食,导致df显示根分区使用率超过90%,必须立即定位并清除这些资源,否则可能触发服务异常或日志写入失败。
识别所有无标签镜像(dangling images)
执行 docker images -f "dangling=true" 查看当前存在的无标签镜像——它们在REPOSITORY列显示为
注意:该命令不会列出有名字但未被任何容器引用的镜像,那些需走另一套清理路径。
删除全部无标签镜像
运行 docker image prune -f 即可清除所有 dangling 镜像。这个操作安全、轻量,不触碰任何带标签的镜像,也不影响正在运行或已停止的容器所依赖的镜像层。
【加 -f 是关键,否则会停在交互确认环节】 若你正在远程脚本中执行,漏掉 -f 将导致流程卡死。
找出并删除已退出的容器
第一步:列出所有状态为 exited 的容器:docker ps -a --filter "status=exited" --format "{{.ID}}\t{{.Names}}\t{{.Image}}\t{{.Status}}"。
第二步:确认这些容器确实无需恢复——比如不是你上周调试留下的数据库快照容器。若不确定,先记录 ID 再查 docker inspect [ID] 看 Mounts 和 Created 时间。
Docker Hub (hub.docker.com)。此技能适用于所有 Docker Hub 操作,包括读取、创建、更新和删除数据。只要任务涉及 Docker Hub,就使用此技能。
第三步:批量删除:docker rm $(docker ps -q -f status=exited)。这一步会清空所有 exited 容器的可写层,释放其占用的空间。
第四步:若存在 status=created 的“半成品”容器(从未启动过),也一并清理:docker rm $(docker ps -aq -f status=created)。这类容器虽未运行,但仍占着元数据和网络配置槽位。
防止无标签镜像再生的实操建议
方法一:构建时加 --rm 参数,例如 docker build --rm -t myapp .,让构建完成自动删掉中间容器,大幅减少 dangling 镜像生成。
方法二:在 CI/CD 流水线末尾插入 docker image prune -f,作为标准清理步骤,避免测试镜像堆积。
方法三:禁用构建缓存(仅限调试):docker build --no-cache -t myapp .,跳过复用旧层,从源头规避分层混乱。










