docker镜像操作
概念
Docker 镜像是 Docker 核心概念之一,是只读的模板,包含运行应用程序所需的代码、运行时、库、环境变量和配置文件等,用于创建 Docker 容器。可以将镜像理解为容器的 “快照” 或 “安装包”,容器则是镜像的运行实例。
核心特性
分层存储
镜像并非单一文件,而是由多个 ** 只读层(layer)** 叠加而成。每层对应 Dockerfile 中的一条指令(如 RUN、COPY),层与层之间共享,可复用。例如:
-
FROM ubuntu:22.04是基础层; -
RUN apt-get install nginx是在基础层上新增的层; -
新层仅存储与上一层的差异,节省磁盘空间。
不可修改
镜像构建完成后是只读的,无法直接修改。若需更新镜像,需通过修改 Dockerfile 重新构建,生成新的层叠加在原有层之上。
可标记和分发
镜像可通过 ** 标签(Tag)** 区分版本(如 nginx:1.29.3、ubuntu:latest),并可推送到 Docker Hub 或私有仓库,实现跨环境共享。
镜像和容器的关系
-
镜像:静态的只读模板,定义了容器的运行环境和内容;
-
容器:镜像的运行实例,基于镜像创建,可读写(容器层是可写的,在镜像只读层之上)。
类比:镜像 ≈ 软件安装包,容器 ≈ 安装后的软件进程。
镜像的常见来源
-
从仓库拉取:通过
docker pull从 Docker Hub 或私有仓库获取官方 / 第三方镜像(如docker pull nginx); -
本地构建:通过
docker build基于 Dockerfile 自定义构建镜像; -
导入镜像:通过
docker load导入本地打包的镜像文件(.tar)。
命令详解
|
命令 |
作用 |
|
docker images |
查看当前所有镜像 |
|
docker image inspect |
查看指定镜像的信息 |
|
docker image prune |
清理无用镜像 |
|
docker tag |
为镜像添加新的标签 |
|
docker rmi |
删除本地镜像标签 |
|
docker save |
将指定镜像保存为tar归档文件 |
|
docker load |
将tar文件中的镜像加载出来 |
|
docker history |
查看镜像的默认历史 |
|
docker build |
构建镜像 |
docker images
列出当前主机上的所有镜像
docker images [OPTIONS] [镜像名[:标签]]
|
options |
作用 |
|
-a/--all |
列出所有镜像(包括中间层镜像,默认只显示顶层镜像) |
|
--digests |
显示镜像的摘要信息 |
|
-f/--filter |
按条件过滤镜像(如标签、状态等) |
|
--format |
自定义输出格式(如表格、JSON 等) |
|
-q/--quiet |
只显示镜像 ID |

docker image inspect
用于查看 Docker 镜像详细元数据的命令,返回镜像的完整配置信息(包括构建层、环境变量、端口、卷、配置指令等),以 JSON 格式输出,帮助深入了解镜像的构成和属性。
docker image inspect [OPTIONS] <镜像名:标签> 或 <镜像ID>
|
options |
作用 |
|
-f/--format |
按指定格式输出(提取特定字段,无需解析完整 JSON) |
|
--size |
显示镜像的总大小(包括所有层) |

docker image prune
用于清理本地无用镜像的命令,主要目标是删除悬空镜像(dangling images)(无标签且未被容器引用的镜像),也可通过参数扩展清理范围,帮助释放磁盘空间,是镜像管理的常用工具。
docker image prune [OPTIONS]
|
options |
作用 |
|
-a/--all |
扩展清理范围:删除所有未被任何容器(运行中 / 已停止)引用的镜像(不仅是悬空镜像) |
|
-f/--force |
强制删除,无需手动确认(跳过交互提示) |
|
--filter |
按条件过滤要删除的镜像(如创建时间、标签等) |
docker tag
为 Docker 镜像添加新的标签(Tag),也可理解为给镜像创建别名或引用,常用于标记镜像版本、为推送镜像到仓库做准备,或简化镜像引用。
docker tag <源镜像名:标签> 或 <源镜像ID> <新标签>

docker rmi
用于删除本地镜像的命令(rmi 即 “remove image”),可删除指定的一个或多个镜像,是镜像管理中针对性删除的核心工具。
docker rmi [OPTIONS] <镜像名:标签> 或 <镜像ID> [镜像名/ID...]
|
options |
作用 |
|
-f/--force |
强制删除镜像(即使镜像被容器引用,需谨慎使用) |
|
--no-prune |
不删除镜像的未标记父层(默认会删除悬空的父层) |

docker save
用于将本地镜像打包为 tar 文件的命令,可将一个或多个镜像保存到本地文件系统,方便镜像的备份、迁移或离线传输(如从一台机器复制到另一台机器)。
docker save [OPTIONS]
|
options |
作用 |
|
-o/--output |
指定输出文件路径(推荐使用,避免重定向错误) |
|
--quiet |
静默模式,不输出进度信息 |

打包之后,如果我们要将镜像发送到其他服务器,就可以使用 scp 命令
# 本地文件 → 远程主机
scp [options] 本地tar文件路径 远程用户@远程主机IP:远程目标路径
# 远程主机文件 → 本地
scp [options] 远程用户@远程主机IP:远程tar文件路径 本地目标路径
|
options |
作用 |
|
-P |
指定远程主机的 SSH 端口(默认 22,若远程端口非默认需指定) |
|
-r |
递归传输目录(若传输的是 tar 包无需此选项,用于目录传输) |
|
-v |
显示传输详情(调试用) |
|
-C |
开启压缩传输(加快大文件传输速度) |
|
-p |
保留文件的修改时间、权限等属性 |
docker load
用于从 tar 文件导入镜像的命令,与 docker save 配对使用,可将之前打包的镜像文件恢复为本地镜像,常用于镜像的离线迁移、备份恢复等场景。
docker load [OPTIONS]
|
options |
作用 |
|
-i/--input |
指定要导入的 tar 文件路径(推荐使用,避免重定向错误) |
|
--quiet |
静默模式,不输出导入进度信息 |

docker history
用于查看Docker 镜像的构建历史,展示镜像中每一层(layer)的创建信息,包括每层的指令、创建时间、大小、作者等细节,帮助你了解镜像的构成、优化方向或排查构建问题。
docker history [OPTIONS] <镜像名:标签> 或 <镜像ID>
|
options |
作用 |
|
-H/--human |
以人类可读的格式显示大小和时间(默认开启) |
|
--no-trunc |
不截断输出(显示完整的构建指令,默认会省略长命令) |
|
-q/--quiet |
只显示每层的镜像 ID |

docker build
用于从 Dockerfile 构建镜像的核心命令,它读取指定目录下的 Dockerfile 和上下文文件,按照 Dockerfile 中的指令逐步构建出可运行的镜像,是定制化镜像的关键方式。
docker build [OPTIONS] <上下文路径/URL/->
|
options |
作用 |
|
-t/--tag |
为镜像添加标签(格式: |
|
-f/--file |
指定自定义 Dockerfile 路径(默认是上下文路径下的 |
|
--build-arg |
设置构建时的参数(需在 Dockerfile 中用 |
|
--no-cache |
构建时不使用缓存(强制重新执行所有步骤,适合修改基础层后) |
|
-q/--quiet |
静默模式,仅输出最终镜像 ID |
|
--platform |
指定构建镜像的目标平台(如 |
更多推荐
所有评论(0)