应先评估再清理:用docker images、docker ps -a、docker images -f dangling=true查清镜像、容器、悬空镜像现状;再按顺序执行docker container prune、docker image prune或-a、docker volume prune等精准删除未被引用资源,避免误删运行中服务。
清理无用的 docker 镜像与容器,核心是安全、有序地释放磁盘空间,同时避免误删正在使用的资源。关键不在于“全删”,而在于识别“未被引用”的资源并精准清理。
先查清现状,再动手删
盲目执行删除命令容易出错。建议按顺序运行以下命令,快速掌握当前环境状态:
- 查看所有镜像及大小:`docker images --format '{{.Size}}\t{{.Repository}}:{{.Tag}}' | sort -hr` —— 找出体积最大的几个镜像,优先评估是否还用得上
- 列出所有容器(含已停止):`docker ps -a --format '{{.Status}}\t{{.Names}}\t{{.Image}}'` —— 看哪些是“Exited”状态且长期未启动
-
检查是否有悬空镜像(
标签) :`docker images -f dangling=true` —— 这类通常是构建残留,基本可安全清理
安全清理未使用的容器
已停止但未删除的容器仍会占用存储(尤其含日志或临时文件)。推荐使用内置 prune 命令,它只动“闲置”资源:
- 删除所有已停止的容器(带确认提示):`docker container prune`
- 强制跳过确认直接清理:`docker container prune -f`
- 如需连同运行中的容器一并清空(慎用!仅限重置环境):先 `docker stop $(docker ps -q)`,再 `docker rm $(docker ps -aq)`
精准清理无用镜像
镜像清理要区分两类情况:
使用 Python 脚本下载 Docker 镜像并打包为 tar 文件。用户说“下载镜像”“拉取镜像”“pull xxx”“帮我下载 nginx 镜像”等时触发。支持 SOCKS5 代理直连(推荐)和国内镜像站加速两种模式。
- 悬空镜像(dangling):没有仓库名和标签,纯属中间层残留。执行 `docker image prune` 即可清除
- 所有未被任何容器引用的镜像:包括有名字有标签但当前没容器在用的。执行 `docker image prune -a` —— 这是释放空间最有效的一步
- 若只想删某类镜像(如旧版本),可用过滤:`docker image prune -a --filter "before=2026-09-10"`
顺手清理配套资源
镜像和容器只是冰山一角,卷(volume)、网络(network)、构建缓存也会悄悄吃掉空间:
- 删未挂载的卷:`docker volume prune`(⚠️注意:卷里存的是持久化数据,确认无业务依赖再执行)
- 删未使用的网络:`docker network prune`
- 一键清空全部未使用资源(含镜像、容器、网络、卷):`docker system prune -a --volumes`
执行完清理后,用 `docker system df` 查看各类型资源实际占用,比 `df -h` 更准确反映 Docker 内部空间分布。不复杂但容易忽略顺序和依赖关系。

















