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 images是docker image ls的简写,两者等效。
4.2.2 输出字段说明
docker image ls 命令默认输出的列表包含仓库名、标签、镜像 ID、创建时间和占用空间等信息。
REPOSITORY
仓库名
TAG
标签(版本)
IMAGE ID
镜像唯一标识(短 ID,前 12 位)
CREATED
创建时间
SIZE
本地占用空间
同一镜像多个标签
注意上面的 ubuntu:24.04 和 ubuntu:noble 拥有相同的 IMAGE ID——它们是同一个镜像的不同标签,只占用一份存储空间。
版本说明:
ubuntu:24.04是具体版本号,ubuntu:noble是发布代号(Ubuntu 24.04 的代号)。在 Dockerfile 中应优先使用版本号(如ubuntu:24.04)而非发布代号,因为版本号在将来更易理解。
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> 的镜像被称为虚悬镜像。自 Docker Engine 29 起,docker image ls 默认不再列出它们,需要 -a 或 dangling=true 过滤器才能看到。
什么是虚悬镜像
仓库名和标签都显示为 <none> 的镜像:
产生原因
镜像重新构建:新镜像使用了旧镜像的标签,旧镜像标签被移除
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 常用命令组合
最后更新于