02.Docker 核心概念
1. 三大核心概念
用快递物流来类比,Docker 的三大核心概念就很好理解了:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| ┌──────────────────────────────────────────────────────────────┐ │ Docker 三大核心概念 │ ├──────────────────────────────────────────────────────────────┤ │ │ │ 镜像 (Image) 容器 (Container) 仓库 (Registry)│ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │ │ 📦 │ │ 🚚 │ │ 🏭 │ │ │ │ 货物的 │ ──────> │ 运输中的 │ <────── │ 物流 │ │ │ │ 标准包装 │ 实例化 │ 集装箱 │ 存储 │ 仓库 │ │ │ └─────────┘ └─────────┘ └─────────┘ │ │ │ │ • 只读模板 • 镜像的运行实例 • 存储和分发镜像 │ │ • 包含运行环境 • 可以启动/停止 • 公有/私有 │ │ • 分层存储 • 有自己的文件系统 • Docker Hub │ │ │ └──────────────────────────────────────────────────────────────┘
|
镜像(Image)—— 货物的标准包装
- 镜像是一个只读模板,包含了运行应用所需的一切:代码、运行时、库、环境变量、配置文件
- 就像一个”快照”,记录了某个时刻的完整环境
- 可以基于一个镜像创建多个容器
容器(Container)—— 运输中的集装箱
- 容器是镜像的运行实例
- 每个容器都是相互隔离的,有自己的文件系统、网络、进程空间
- 容器可以被创建、启动、停止、删除
- 容器中的数据默认不会持久化(除非使用数据卷)
仓库(Registry)—— 物流仓库
- 用来存储和分发镜像
- Docker Hub 是最大的公共仓库,类似 GitHub
- 企业可以搭建私有仓库
2. Docker 架构
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| ┌───────────────────────────────────────────────────────────────────┐ │ Docker 架构图 │ ├───────────────────────────────────────────────────────────────────┤ │ │ │ Client (客户端) Docker Host (Docker 主机) │ │ ┌─────────────────┐ ┌───────────────────────────┐│ │ │ docker build │ │ Docker Daemon ││ │ │ docker pull │ ──REST API──> │ (dockerd) ││ │ │ docker run │ │ ┌─────────────────────┐ ││ │ └─────────────────┘ │ │ Containers │ ││ │ │ │ ┌───┐ ┌───┐ ┌───┐ │ ││ │ │ │ │ C │ │ C │ │ C │ │ ││ │ │ │ └───┘ └───┘ └───┘ │ ││ │ │ └─────────────────────┘ ││ │ │ ┌─────────────────────┐ ││ │ │ │ Images │ ││ │ │ │ ┌───┐ ┌───┐ ┌───┐ │ ││ │ │ │ │ I │ │ I │ │ I │ │ ││ │ │ │ └───┘ └───┘ └───┘ │ ││ │ │ └─────────────────────┘ ││ │ └───────────────────────────┘│ │ ▲ │ │ │ │ │ pull/push │ │ │ │ │ ▼ │ │ ┌───────────────────────────┐│ │ │ Registry ││ │ │ (Docker Hub) ││ │ │ ┌─────────────────────┐ ││ │ │ │ nginx, mysql, redis │ ││ │ │ │ node, python, ... │ ││ │ │ └─────────────────────┘ ││ │ └───────────────────────────┘│ └───────────────────────────────────────────────────────────────────┘
|
组件说明:
- Docker Client:命令行工具,用户通过它与 Docker Daemon 交互
- Docker Daemon (dockerd) :后台服务,负责管理镜像、容器、网络、存储
- Docker Registry:镜像仓库,存储和分发镜像