【Docker基础】Docker核心概念:镜像(Image)详解
目录
1 Docker镜像概述
1.1 什么是Docker镜像
1.2 镜像与容器的关系
2 Docker镜像的组成结构
2.1 分层存储机制
2.2 镜像层详解
3 Docker镜像的核心概念
3.1 镜像仓库(Registry)
3.2 标签(Tag)
3.3 镜像摘要(Digest)
4 Docker镜像的生命周期
4.1 镜像构建流程
4.2 镜像分发流程
5 Docker镜像的存储与管理
5.1 镜像存储机制
5.2 镜像管理命令
6 常用Docker镜像操作示例
6.1 查看镜像
6.2 删除镜像
6.3 导出与导入镜像
7 总结
1 Docker镜像概述
Docker镜像是Docker技术的核心组件之一,它是轻量级、可执行的独立软件包,包含运行某个软件所需的所有内容:代码、运行时环境、系统工具、系统库和设置。镜像采用分层存储的架构,这种设计使得Docker镜像非常高效且易于分发。
1.1 什么是Docker镜像
Docker镜像是一个 只读模板,用于创建Docker容器。你可以把它类比为面向对象编程中的"类"——镜像是静态的定义,而容器是镜像的运行实例。镜像包含了运行应用程序所需的一切:操作系统、运行时环境、应用程序代码、依赖库等。
镜像的一个重要特性是 不可变性——一旦创建就不能被修改(只能通过创建新镜像来更新)。这种特性确保了开发、测试和生产环境的一致性。
1.2 镜像与容器的关系
镜像和容器的关系可以用以下类比来理解:
- 镜像 = 类(Class)
- 容器 = 对象(Object Instance)
当你运行一个镜像时,Docker会创建一个可写的容器层(称为"容器层"或"可写层")在镜像层之上。所有对运行中容器的修改都发生在这个可写层中,而不会影响底层的镜像。

2 Docker镜像的组成结构
2.1 分层存储机制
Docker镜像采用分层(Layer)的存储机制,每一层都是只读的,并且可以被多个镜像共享。这种设计带来了几个重要优势:
- 存储效率:相同层只需存储一次
- 快速分发:只需传输本地不存在的层
- 快速构建:构建时只需重建变化的层

2.2 镜像层详解
每个Docker镜像由多个层组成,每层代表Dockerfile中的一条指令:
- 基础层:通常是操作系统层(如Ubuntu、Alpine等)
- 中间层:安装软件、配置环境等操作创建的层
- 顶层:包含应用代码和运行配置
这种分层结构使得镜像可以高效地复用已有层,大大减少了存储空间和网络传输的需求。
3 Docker镜像的核心概念
3.1 镜像仓库(Registry)
Docker镜像仓库是存储和分发Docker镜像的服务。主要有两种类型:
- 公共仓库:如Docker Hub,包含大量官方和社区维护的镜像
- 私有仓库:企业或组织内部搭建的镜像仓库,如Harbor

3.2 标签(Tag)
Docker使用标签来区分同一镜像的不同版本。标签通常表示版本号、环境或其他标识信息,例如:
- nginx:latest - 最新稳定版
- nginx:1.21.6 - 特定版本
- myapp:dev - 开发版本
3.3 镜像摘要(Digest)
每个Docker镜像都有一个唯一的SHA256哈希值,称为摘要(Digest)。它确保了镜像内容的完整性,即使标签被重新指向不同的内容,摘要也不会改变。
4 Docker镜像的生命周期
4.1 镜像构建流程
- Docker镜像通常通过Dockerfile构建,流程如下:

- 编写Dockerfile:定义构建步骤
- 执行构建命令:docker build -t myimage:tag .
- 逐条执行指令:每条指令创建一个新层
- 生成最终镜像:所有层叠加形成最终镜像
4.2 镜像分发流程
镜像的分发通常涉及以下步骤:
- 本地构建:开发者在本地构建镜像
- 标记镜像:为镜像打上仓库地址标签
- 推送镜像:将镜像推送到远程仓库
- 拉取镜像:其他环境从仓库拉取镜像

5 Docker镜像的存储与管理
5.1 镜像存储机制
Docker使用存储驱动来管理镜像层和容器层。常见的存储驱动有:
- overlay2(推荐)
- aufs
- devicemapper
- btrfs
- zfs
5.2 镜像管理命令
- 常用Docker镜像管理命令:
命令 | 描述 |
docker images | 列出本地镜像 |
docker pull | 拉取远程镜像 |
docker push | 推送镜像到仓库 |
docker rmi | 删除本地镜像 |
docker tag | 给镜像打标签 |
docker build | 构建镜像 |
docker history | 查看镜像构建历史 |
6 常用Docker镜像操作示例
6.1 查看镜像
# 列出本地所有镜像
docker images# 查看镜像详细信息
docker inspect ubuntu:22.04# 查看镜像构建历史
docker history my-image
6.2 删除镜像
# 删除指定镜像
docker rmi my-image# 删除所有未使用的镜像
docker image prune -a
6.3 导出与导入镜像
# 导出镜像为 tar 文件
docker save -o my-image.tar my-image# 从 tar 文件导入镜像
docker load -i my-image.tar
7 总结
Docker镜像是容器化技术的基石,理解其核心概念和工作原理对于高效使用Docker至关重要。