全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-21 6 分钟 ✍️ juanwangdev

镜像与容器概念

镜像和容器是 Docker 的核心概念,下面梳理其关系与特性。

镜像(Image)

什么是镜像

镜像是容器的只读模板,包含运行应用所需的代码、运行时、库、环境变量和配置文件。

分层架构

镜像由多个层(Layer)组成,采用 UnionFS 联合文件系统:

Bash
镜像 = Layer1 (基础系统层) + Layer2 (运行时层) + Layer3 (应用层)
         ↓                   ↓                   ↓
      Ubuntu 22.04        + JDK 17            + App.jar
  • 每一层对应 Dockerfile 中的一条指令
  • 层是只读的,构建后不可修改
  • 相同层在多个镜像间共享,节省存储

查看镜像层

Bash
# 查看镜像历史层
docker history nginx:latest

# 输出示例
IMAGE          CREATED       CREATED BY                                      SIZE
605c77e624dd   2 weeks ago   CMD ["nginx" "-g" "daemon off;"]                0B
<missing>      2 weeks ago   EXPOSE map[80/tcp:{}]                           0B
<missing>      2 weeks ago   /bin/sh -c #(nop) COPY file:                    1.2kB

容器(Container)

什么是容器

容器是镜像的运行实例,包含一个可写的容器层:

text
容器 = 镜像层 (只读) + 容器层 (可读写)

镜像与容器关系

维度镜像容器
状态静态模板运行实例
读写只读可读写的顶层
生命周期长期存在可创建/启动/停止/删除
类比类 (Class)对象 (Instance)
数量1 个镜像可创建 N 个容器

容器可写层

容器启动时,Docker 在镜像层之上创建一个薄的可写层:

text
容器层 (可读写)  ← 容器运行时写入
   ↓
镜像层3 (只读)
   ↓
镜像层2 (只读)
   ↓
镜像层1 (只读)
  • 容器内修改文件实际写入容器层
  • 删除容器后,容器层数据丢失(除非使用 Volume)
  • 多个容器共享同一镜像层,互不影响

查看镜像与容器

text
# 列出本地镜像
docker images

# 查看镜像详情
docker inspect nginx:latest

# 列出运行中的容器
docker ps

# 列出所有容器(包括停止的)
docker ps -a

# 查看容器文件系统变更
docker diff <container_id>

要点总结

  • 镜像是只读模板,由多个层叠加而成,层间共享节省存储
  • 容器是镜像的运行实例,顶部增加可写层
  • 镜像与容器关系类似类与对象:1 个镜像可创建多个容器
  • 容器内修改的数据存储在容器层,删除容器后丢失
  • 持久化数据需使用 Volume 或 Bind Mount

📝 发现内容有误?点击此处直接编辑

← 上一篇 Docker 简介与安装
下一篇 → 镜像拉取与搜索
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库