Docker 镜像与容器的区别
Docker 镜像与容器的区别
Docker 镜像和容器是 Docker 技术的两个核心概念,它们之间的关系类似于面向对象编程中"类"和"实例"的关系。
Docker 镜像 (Image)
- 定义:静态的、只读的模板文件,包含运行应用所需的所有依赖项和配置
- 特点:
- 不可更改(只读)
- 由多层文件系统组成(Union File System)
- 存储在 Docker 仓库中
- 通过 Dockerfile 构建而成
- 用途:
- 作为创建容器的基础
- 可以共享和分发
Docker 容器 (Container)
- 定义:镜像的运行实例,是一个轻量级的、可执行的软件包
- 特点:
- 可读写(在镜像层之上添加一个可写层)
- 是运行时的环境
- 具有自己的进程、网络、文件系统等隔离环境
- 生命周期有限(可以启动、停止、删除)
- 用途:
- 实际运行应用程序
- 提供隔离的执行环境
关键区别
特性 | 镜像 (Image) | 容器 (Container) |
---|---|---|
状态 | 静态、只读 | 动态、可读写 |
存储 | 存储在 Docker 仓库 | 运行在主机内存中 |
生命周期 | 持久存在 | 临时存在(可以随时创建和销毁) |
可修改性 | 不可直接修改 | 可以修改(通过可写层) |
数量关系 | 一个镜像可以创建多个容器 | 一个容器基于一个镜像创建 |
关系比喻
- 镜像 像是软件的"安装包"(如 .exe 或 .dmg 文件)
- 容器 像是安装后正在运行的软件
当运行 docker run
命令时,Docker 会从指定的镜像创建一个新的容器实例。多个容器可以基于同一个镜像创建,每个容器运行时都会在镜像的只读层之上添加一个可写层。