docker images 是干什么的
docker images 列出本地镜像的仓库名、标签、镜像标识与大小,用来确认构建与拉取的结果。列表里出现的无标签条目通常是构建过程中产生的中间层或被新标签覆盖的旧版本,它们不等于损坏的镜像,但会持续占用磁盘,需要定期清理。
基本信息
| 基本语法 | docker images [选项] [仓库名] |
|---|---|
| 常用参数 | -a 显示中间层镜像,-q 只输出标识,--digests 显示摘要 |
| 过滤 | --filter 支持查看无标签镜像、按名称前缀匹配、按时间先后筛选 |
| 格式化 | --format 可指定输出列,如仓库名、标签与大小 |
| 大小口径 | 显示的是镜像层解压后的大小之和,与磁盘实际占用口径不同 |
| 标签关系 | 同一个镜像标识可以对应多个标签,说明它们是同一份内容 |
典型使用场景
- 确认构建产物:构建完成后核对镜像名、标签与大小是否符合预期
- 排查拉取结果:确认目标版本确实已经拉到本地
- 清理前的摸底:统计无标签镜像数量与体积,评估可回收空间
- 核对镜像来源:确认生产机器上是否存在来源不明的镜像
- 对比版本差异:同一应用不同版本的体积变化,能反映构建是否被改坏
- 为发布做准备:确认所需镜像都已在目标节点上,避免发布时集中拉取
输出逐列读法
| 列 | 含义 | 注意点 |
|---|---|---|
| REPOSITORY | 仓库名 | 含仓库地址与命名空间时会完整显示 |
| TAG | 标签 | 显示 none 时说明没有标签,通常是中间层 |
| IMAGE ID | 镜像标识 | 内容摘要的前 12 位,同一标识可以有多个标签 |
| CREATED | 创建时间 | 反映构建时间,不反映拉取时间 |
| SIZE | 大小 | 层大小之和,与本地磁盘占用不等价 |
常用组合
常用组合
docker images # 列出本地镜像
docker images --filter "dangling=true" # 只看无标签镜像
docker images --format "{{.Repository}}:{{.Tag}} {{.Size}}" # 固定列输出
docker images -q | wc -l # 统计镜像数量
docker image prune # 清理无标签镜像(确认后再执行)镜像标识是内容摘要:同一个标识下挂多个标签时,说明这些标签指向的完全相同的镜像内容,删除其中一个标签不影响其他标签。
显示的镜像大小不等于磁盘占用:镜像层在容器间共享,且拉取时是压缩传输。评估磁盘空间要看整体占用而不是逐行相加。
清理镜像前先确认用途:被容器引用的镜像不能直接删除,误删基础镜像还会让构建缓存与后续构建全部重来。
无标签镜像的常见来源是重新构建同名标签:新镜像接管了标签,旧镜像就变成无主状态,属于正常现象而非镜像损坏。
本地镜像的管理习惯
- 为镜像建立命名规范,仓库名带项目与用途信息
- 生产机器只保留必要版本,减少磁盘占用与误用风险
- 定期清理无标签镜像,回收构建过程产生的层
- 统一基础镜像版本,减少重复下载与冗余存储
- 保留上一个可用版本的镜像,回退时无需重新构建
- 核对生产机器上的镜像来源,清点来源不明的镜像
- 把镜像清理纳入例行运维,避免磁盘被动告警
镜像数量与磁盘使用要定期检查:构建频繁的机器往往先出现磁盘告警,把清理动作提前纳入例行运维能避免被动。