最常用且安全的清理方式是 docker image prune 命令;一键清理悬空镜像用 docker image prune -f,慎用 -a 参数;可按时间、悬空状态等条件筛选清理;精准删除需结合 docker images -q 与 docker rmi;构建缓存需单独用 docker builder prune 清理。

清理 Docker 镜像最常用且安全的方式是用 docker image prune 命令,配合合理参数即可完成批量清理。不建议手动写复杂脚本删除镜像 ID,容易误删或破坏依赖关系。下面给出几种实用、可直接运行的清理方式。
一键清理所有悬空镜像(最常用)
悬空镜像(dangling images)是指没有标签、也没有容器引用的中间层镜像,通常由构建过程产生,占空间但无用。
- 执行命令:
docker image prune - 加
-f跳过确认:docker image prune -f - 加
-a可清理所有未被容器使用的镜像(慎用!会删掉没运行但有标签的镜像)
按条件筛选后清理(推荐用于定期维护)
例如只删 30 天前创建的未使用镜像:
-
docker image prune -f --filter "until=30m"(单位支持 m/h/d) - 组合多个 filter:
--filter "dangling=true" --filter "until=7d" - 注意:filter 对悬空镜像无效,
dangling=true本身已隐含时间无关逻辑
清理特定名称或标签的镜像(精准控制)
适合 CI/CD 流水线中清理历史构建镜像:
- 查出匹配镜像:
docker images 'myapp:*' -q - 删除它们:
docker rmi $(docker images 'myapp:202*' -q) - 更安全写法(避免空参数报错):
docker images 'myapp:old-*' -q | xargs -r docker rmi
清理同时释放构建缓存(提升后续构建速度)
构建缓存不显示在 docker images 中,但占用磁盘,需单独清理:
-
docker builder prune(删未被使用的构建缓存) -
docker builder prune -a(删全部构建缓存,下次构建会变慢) - 可合并执行:
docker image prune -f && docker builder prune -f
不复杂但容易忽略:清理前建议先用 docker system df 查看镜像、容器、缓存各自占用,做到心中有数。日常维护用 docker image prune -f 就够了,其他操作按需触发即可。











