For the complete documentation index, see llms.txt. This page is also available as Markdown.

4.3 删除本地镜像

当不再需要某个镜像时,我们可以将其删除以释放存储空间。本节介绍删除镜像的常用方法。

4.3.1 基本用法

使用 docker image rm 删除本地镜像:

$ docker image rm [选项] <镜像1> [<镜像2> ...]

💡 docker rmi 是 docker image rm 的简写,两者等效。


4.3.2 镜像标识方式

删除镜像时,可以使用多种方式指定镜像:

方式
说明
示例

短 ID

ID 的前几位(通常 3-4 位)

docker rmi 501

长 ID

完整的镜像 ID

docker rmi 501ad78535f0...

镜像名:标签

仓库名和标签

docker rmi redis:7.0

镜像摘要

精确的内容摘要

docker rmi nginx@sha256:...

版本提示:建议使用 镜像名:标签 的方式删除,特别是当需要明确清理特定版本的镜像时。例如 docker rmi redis:7.0 比 docker rmi redis:latest 更清晰且安全。

使用短 ID 删除

$ docker image ls
REPOSITORY   TAG     IMAGE ID       SIZE
redis        alpine  501ad78535f0   30MB
nginx        latest  e43d811ce2f4   142MB

## 只需输入足够区分的前几位

$ docker rmi 501
Untagged: redis:alpine
Deleted: sha256:501ad78535f0...

使用镜像名删除

使用摘要删除

摘要删除最精确,适用于 CI/CD 场景:


4.3.3 理解输出信息

执行删除命令后,Docker 会输出一系列的操作记录,理解这些信息有助于我们掌握镜像删除的机制。

删除镜像时会看到两类信息:Untagged 和 Deleted

Untagged vs Deleted

操作
含义

Untagged

移除镜像的标签

Deleted

删除镜像的存储层

删除流程

Docker 会检测镜像是否有容器依赖或其他标签指向,只有在确认为无用资源时才会真正删除存储层。


4.3.4 批量删除

手动一个一个删除镜像非常繁琐,Docker 提供了 image prune 命令和 shell 组合命令来实现批量清理。

删除所有虚悬镜像

虚悬镜像 (dangling):没有标签的镜像,通常是旧版本被新版本覆盖后产生的

删除所有未使用的镜像

按条件删除


4.3.5 删除失败的常见原因

在删除镜像时,Docker 可能会提示错误并拒绝执行。这通常是为了防止误删正在使用的资源。

原因一:有容器依赖

解决方案:

原因二:多个标签指向同一镜像

当同一个镜像有多个标签时,docker rmi 只是删除指定的标签,不会删除镜像本身。

原因三:被其他镜像依赖:中间层

中间层镜像被其他镜像依赖,无法删除。需要先删除依赖它的镜像。


4.3.6 常用过滤条件

过滤条件
说明
示例

dangling=true

虚悬镜像

-f dangling=true

before=镜像

在某镜像之前

-f before=mongo:3.2

since=镜像

在某镜像之后

-f since=mongo:3.2

label=key=value

按标签过滤

-f label=version=1.0

reference=pattern

按名称模式

-f reference='*:latest'


4.3.7 清理策略

针对不同的环境(开发环境 vs 生产环境),我们应该采用不同的镜像清理策略。

开发环境

CI/CD 环境

查看空间占用


最后更新于