Docker 引擎原理
架构
┌─────────────────────────────────────┐
│ Docker CLI │
└──────────────┬──────────────────────┘
│ REST API
┌──────────────▼──────────────────────┐
│ Docker Daemon (dockerd) │
│ ┌────────────────────────────────┐ │
│ │ containerd │ │
│ │ ┌──────────────────────────┐ │ │
│ │ │ runc │ │ │
│ │ │ (OCI 容器运行时) │ │ │
│ │ └──────────────────────────┘ │ │
│ └────────────────────────────────┘ │
└─────────────────────────────────────┘
组件职责
| 组件 | 职责 |
|---|---|
| Docker CLI | 命令行工具 |
| dockerd | Docker 守护进程 |
| containerd | 容器生命周期管理 |
| runc | OCI 运行时,实际创建容器 |
容器创建流程
docker run nginx
↓
CLI → dockerd → containerd → runc
↓
创建容器
设置 namespace
设置 cgroup
运行进程
小结
| 概念 | 说明 |
|---|---|
| dockerd | 守护进程 |
| containerd | 容器管理 |
| runc | OCI 运行时 |