概念
Docker image
本质上是一个
read-only
只读文件, 这个文件包含了文件系统、源码、库文件、依赖、工具等一些运行 application
所必须的文件。我们可以把 Docker image 理解成一个模板, 可以通过这个模板实例化出来很多容器。

image
里面是一层层文件系统
Union FS
。联合文件系统,可以将几层目录挂载到一起,形成一个虚拟文件系统。每一层文件系统我们叫做一层 layer,联合文件系统可以对每一层文件系统设置三
种权限,只读(
readonly
)、读写(
readwrite
)和写出(
whiteout-able
),但是
docker 镜像中每一层文件系统都是只读的。
构建镜像的时候,从一个最基本的操作系统开始,每个构建的操作都相当于做一层的修改,增加了一层文件系统。一层层往上叠加,上层的修改会覆盖底层该位置的可见性,这也很容易理解,就像上层把底层遮住了一样。当你使用的时候,你只会看到一个完全的整体,你不知道里面有几层,也不清楚每一层所做的修改是什么。
我们以日常的地板为例,开发商的房子提供给用户的时候一般是做好了地暖,而这些地暖其实是一层一层添加的,最底层的钢筋水泥层,然后添加保温层,采暖管,再铺设水泥层,到最后交付的时候家家户户都是水泥面,这一层一般是不可修改的,最上层用户一般会再铺设商木地板或者地板砖每家每户的选择不一样,相当于我们镜像的容器层。

为什么需要镜像
在部署应用时,通过手工或写一些脚本的方式进行部署。这样部署面临问题就是云端和本地环境一致问题。用户为每个应用打包过程比较繁琐,需要配置和给中修改等操作,非常费劲。
然而,
Docker
镜像就是为了解决这个小小的
打包
功能,突然一夜之间成名。
它是如何解决 Paas
时代所面临的云端和本地一致性问题?很简单,它是把一个镜像制作成一个完整的操作系统所有文件和对应的目录结构,这样的压缩包是跟你本地和测试环境用的操作系统一摸一样。
docker
最大的贡献就是定义了容器镜像的分层的存储格式
,
docker
镜像技术的基础是联合文件系统(UnionFS)
,其文件系统是分层的。这样既可以充分利用共享层,又可以减少存储空间占用。
docker
镜像提供了一种打包应用程序和预配置服务器环境的便捷方式,可以很方便的将其用于个人用途或与其他 Docker
用户公开
共享
。
作用 | 说明 |
---|---|
标准化应用打包 | 将应用代码、运行时环境、依赖库、系统工具等完整打包成一个不可变的镜像文件。 |
环境一致性 | 解决“在我机器上能跑,线上却失败”的问题,确保开发、测试、生产环境完全一致。 |
快速部署与扩展 | 秒级启动容器,支持横向扩展(如 Kubernetes 基于镜像快速部署多个实例)。 |
版本控制与回滚 | 通过镜像标签(如 v1.0 、latest )管理版本,随时回滚到历史版本。 |
依赖隔离 | 每个容器基于镜像独立运行,避免依赖冲突(如 Python 2/3 共存)。 |
查看镜像仓库在本地的存储信息
先查看配置文件 /etc/docker/daemon.json 设置的数据储存目录在哪里,默认为 /var/lib/docker。
cat /etc/docker/daemon.json
这里我是更改到 /data/var/lib/docker 目录下,然后就可以进入该目录下,可以看到 /overlay2 文件夹,该文件夹中记录已拉取镜像文件的信息。
镜像命令详解
命令 |
别名
|
功能
|
docker images | docker image ls/docker image list | 列出本地镜像 |
docker tag |
docker image tag
| 给镜像打标签,可用于推送镜像仓库 |
docker pull
|
docker image pull
| 从镜像仓库拉取镜像 |
docker push
| docker image push |
推送镜像到仓库
|
docker rmi
| docker image rm/ docker image remove |
删除本地镜像
|
docker build |
docker image build
| 通过 dockerfile 制作镜像 |
docker save |
docker image save
|
将指定镜像保存成 tar
归档文件
|
docker load
| docker image load |
导入使用 docker save
命令导出的镜像
|
docker image inspect | 查看镜像详细信息 | |
docker history
|
docker image history
|
查看镜像历史
|
docker import
|
docker image import
| 从归档文件 docker export 中创建镜像 |
docker image prune
|
删除不使用的镜像
|
docker images
功能:列出本地镜像。
语法:
docker images [OPTIONS] [REPOSITORY[:TAG]]
别名:
docker image ls, docker image list
关键参数:
- -a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);
- --digests :显示镜像的摘要信息;
- -f :显示满足条件的镜像;
- --format :指定返回值的模板文件;
- --no-trunc :显示完整的镜像信息;
- -q :只显示镜像 ID。
样例:列出本地全部镜像
docker images
docker tag
功能:标记本地镜像,将其归入某一仓库。
语法:
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
别名:
docker image tag
样例:
docker tag nginx:1.27.0-perl crpi-u3d7h19iifo9g57h.cn-shenzhen.personal.cr.aliyuncs.com/lbk_repository/mytest:mynginx_1.27.0
docker rmi
功能:可以根据 id 和名字删除镜像,对于使用的镜像需要先清理容器再删除镜像。
语法:
docker rmi [OPTIONS] IMAGE [IMAGE...]
别名:
docker image rm, docker image remove
关键参数:
- -f :强制删除;
- --no-prune :不移除该镜像的过程镜像,默认移除;
样例:
docker save
功能:将指定镜像保存成 tar
归档文件。
语法:
docker save [OPTIONS] IMAGE [IMAGE...]
别名:
docker image save
关键参数:
- -o :输出到的文件。
样例:
docker save -o mynginx_1.27.5.tar nginx:1.27.5
docker load
功能:导入使用 docker save 命令导出的镜像,docker save 和 docker load 命令通常配合 scp 命令使用来进行镜像的拷贝,该命令是 Linux 系统中基于 SSH 的安全文件传输命令,用于在本地主机和远程主机之间加密传输文件或目录
。
语法:
docker load [OPTIONS]
别名:
docker image load
关键参数:
- --input , -i : 指定导入的文件,代替 STDIN。
- --quiet , -q : 精简输出信息。
样例:

docker image inspect
功能:查看镜像详细信息
语法:
docker image inspect [OPTIONS] IMAGE [IMAGE...]
样例:查看镜像详细信息
docker image inspect nginx:1.27.5
docker history
功能:显示镜像历史。
语法:
docker history [OPTIONS] IMAGE
别名:
docker image history
关键参数:
- -H , --human :大小和日期采用人容易读的格式展现
- --no-trunc :显示全部信息,不要隔断;
- -q, --quiet: 只显示镜像 id 信息;
样例:
docker history nginx:1.27.5

docker import
功能:从归档文件中创建镜像,其功能与 docker load 类似。
语法:
docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
别名:
docker image import
关键参数:
- -c :应用 docker 指令创建镜像;
- -m :提交时的说明文字;
样例:
docker import mynginx_1.27.5.tar mynginx
docker image prune
功能:删除不使用的镜像。
语法:
docker image prune [OPTIONS]
关键参数:
- -a , --all : 删除全部不使用的镜像;
- --filter filter:指定过滤条件;
- -f, --force :不提示是否删除;
样例:
docker image prune
docker build
功能:
docker build
命令用于使用
Dockerfile
创建镜像。
语法:
docker build [OPTIONS] PATH | URL | -
关键参数:
- --build-arg=[ ] :设置镜像创建时的变量;
- -f :指定要使用的 Dockerfile 路径;
- --label=[ ] :设置镜像使用的元数据;
- --no-cache :创建镜像的过程不使用缓存;
- --pull :尝试去更新镜像的新版本;
- --quiet, -q :安静模式,成功后只输出镜像 ID;
- --rm :设置镜像成功后删除中间容器;
- --tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。
- --network: 默认 default。在构建期间设置 RUN 指令的网络模式;
样例:
docker build -t mynginx:v1 .