Docker清理悬空镜像

Docker清理悬空镜像

引言

反复build镜像后,旧的无标签镜像()一层层堆积,/var/lib/docker占满磁盘。这些悬空镜像没被任何容器引用,可以安全清理,但要分清悬空、停止容器、无用网络和构建缓存,别一刀切删错。

先看占用

docker system df

查看镜像、容器、卷、构建缓存各占多少,先摸清再动手。

什么是悬空镜像

build出新标签后,旧层变成:,没有标签、不被容器使用,就是dangling悬空镜像。

只清悬空镜像(安全)

docker image prune

只删除无标签无引用的dangling镜像,已打标签和在用镜像不动,最稳妥。

清停止的容器

docker container prune

删掉所有已退出的容器,正在运行的不受影响。

清无用镜像和构建缓存(更彻底)

docker system prune

一次清悬空镜像、停止容器、无用网络和构建缓存,加-a连未被容器使用的镜像也删,加--volumes连未使用卷一起删:

docker system prune -a --volumes

手动删单个镜像

docker image rm 镜像ID

若提示被容器引用,先确认容器用途,别直接强制删。

注意事项

  • 生产慎用-a和--volumes,卷里可能存数据库数据,删了不可恢复;
  • 先docker system df看占用,再决定清哪一类;
  • 清理前确认没有需要保留的停止容器和备份卷;
  • 镜像仓库里还能重新拉取的镜像才适合-a全清;
  • 定期配合定时任务清理,避免磁盘缓慢耗尽。

总结

日常用docker image prune清悬空镜像最安全,docker system prune清停止容器和缓存,-a和--volumes只在确认无保留价值时用。先df看占用、分级清理,避免误删业务卷和在用镜像。


emer 发布于  2026-10-19 07:21