github编辑

4.2 列出镜像

在下载了镜像后,我们可以使用 docker image ls 命令列出本地主机上的镜像。

4.2.1 基本用法

查看本地已下载的镜像:

$ docker image ls
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
redis        latest    5f515359c7f8   5 days ago     183MB
nginx        latest    05a60462f8ba   5 days ago     181MB
ubuntu       24.04     329ed837d508   3 days ago     78MB
ubuntu       noble     329ed837d508   3 days ago     78MB

💡 docker imagesdocker image ls 的简写,两者等效。


4.2.2 输出字段说明

docker image ls 命令默认输出的列表包含仓库名、标签、镜像 ID、创建时间和占用空间等信息。

字段
说明

REPOSITORY

仓库名

TAG

标签 (版本)

IMAGE ID

镜像唯一标识 (短 ID,前 12 位)

CREATED

创建时间

SIZE

本地占用空间

同一镜像多个标签

注意上面的 ubuntu:24.04ubuntu:noble 拥有相同的 IMAGE ID——它们是同一个镜像的不同标签,只占用一份存储空间。


4.2.3 理解镜像大小

Docker 镜像的大小可能与我们通常理解的文件大小有所不同,这涉及到分层存储的概念。

本地大小 vs Hub 显示大小

位置
显示大小
说明

Docker Hub

29MB

压缩后的网络传输大小

docker image ls

78MB

本地解压后的实际大小

实际磁盘占用

由于镜像是分层存储,不同镜像可能共享相同的层:

因此,docker image ls 中各镜像大小之和 > 实际磁盘占用。

查看实际空间占用


4.2.4 过滤镜像

随着本地镜像数量的增加,我们需要更有效的方式来查找特定的镜像。Docker 提供了多种过滤方式。

按仓库名过滤

按仓库名和标签过滤

使用过滤器 --filter

过滤条件
说明
示例

dangling=true

虚悬镜像

-f dangling=true

before=镜像

在某镜像之前创建

-f before=nginx:latest

since=镜像

在某镜像之后创建

-f since=nginx:latest

label=key=value

按 LABEL 过滤

-f label=version=1.0

reference=pattern

按名称模式

-f reference='*:latest'


4.2.5 虚悬镜像

在镜像列表里,你可能会看到一些仓库名和标签都为 <none> 的镜像,这类镜像被称为虚悬镜像。

什么是虚悬镜像

仓库名和标签都显示为 <none> 的镜像:

产生原因

  1. 镜像重新构建:新镜像使用了旧镜像的标签,旧镜像标签被移除

  2. docker pull 更新:拉取更新版本时,旧版本失去标签

处理虚悬镜像


4.2.6 中间层镜像

除了虚悬镜像,docker image ls 默认列出的只是顶层镜像。还有一种镜像是为了加速镜像构建、重复利用资源而存在的中间层镜像。

查看所有镜像:包含中间层

会显示很多无标签镜像——这些是构建过程中产生的中间层,被其他镜像依赖。

⚠️ 不要删除中间层镜像。它们是其他镜像的依赖,删除会导致上层镜像无法使用。删除顶层镜像时会自动清理不再需要的中间层。


4.2.7 格式化输出

为了配合脚本使用或展示更关注的信息,我们可以使用 --format 参数来自定义输出格式。

只输出 ID

常用于配合其他命令:

显示完整 ID

显示摘要

自定义格式

使用 Go 模板语法自定义输出:

可用模板字段

字段
说明

.ID

镜像 ID

.Repository

仓库名

.Tag

标签

.Digest

摘要

.CreatedSince

创建后经过的时间

.CreatedAt

创建时间

.Size

大小


4.2.8 常用命令组合


最后更新于