如何删除 Docker 镜像?

删单个镜像 docker rmi 镜像名:标签,批量删 docker rmi 名1 名2,全删 docker rmi $(docker images -aq);被容器占用的需先删容器或 -f。悬空镜像用 docker image prune。本文汇总。

最佳实践
如何删除 Docker 镜像?封面

基本命令:docker rmi <镜像名:标签或ID> 删指定镜像;多个一起删就列多个参数;全部删除用 docker rmi $(docker images -aq)。删不掉的两种原因:有容器在用(先删容器或 -f 强删)、有多个标签(每个标签删一次或按 ID 强删)。

先看有什么

docker images -a

按名/按 ID 删

docker rmi nginx:1.25              # 按 名称:标签
docker rmi d583c3ac45fd            # 按镜像 ID
docker rmi img1:tag img2:tag d583  # 批量

注意:按名删只是删标签;镜像有多个标签时数据还在,直到最后一个标签被删。

删不掉的处理

被容器引用(哪怕容器已停止):

Error response from daemon: conflict: unable to remove repository reference ... container is using it
docker rm $(docker ps -aq --filter ancestor=nginx:1.25)   # 删引用它的容器
docker rmi nginx:1.25
# 或强行
docker rmi -f nginx:1.25

清空全部镜像

docker rm -f $(docker ps -aq)        # 先删全部容器
docker rmi -f $(docker images -aq)   # 再删全部镜像

更常用的等价物:docker system prune -a(未使用的镜像+停止容器+网络+缓存一锅端)。

只清悬空镜像

重新构建后留下一堆 <none>:<none>

docker image prune        # 只清悬空层,不动有标签的

观测云对照

镜像膨胀趋势看得见。 DataKit 采集主机镜像数量与磁盘占用,监控器对 /var/lib/docker 用量告警,把"删镜像救磁盘"变成前置动作而非救火。

常见问题(FAQ)

Q:rmi 之后磁盘空间没释放?
A:镜像层被其他镜像共享,删一个标签可能只释放少量独有层;docker system df 看真实可回收量。

Q:仓库里的镜像怎么删?
A:rmi 只删本地。远端仓库要在仓库侧操作(Harbor 控制台/Registry API),再考虑垃圾回收。

Q:能不能保留最近 N 个版本自动清理?
A:Docker 本身没有,写脚本按时间排序过滤;CI 场景建议配合仓库侧保留策略。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台