mirror of
https://github.com/yeasy/docker_practice.git
synced 2026-03-24 10:45:23 +00:00
Polish Docker workflow formatting
This commit is contained in:
@@ -8,17 +8,10 @@ Docker 采用了 **C/S (客户端/服务端)** 架构。Client 向 Daemon 发送
|
||||
|
||||
```mermaid
|
||||
graph LR
|
||||
Client[客户端 (Docker CLI)] -- docker run --> Dockerd
|
||||
Client -- docker pull --> Dockerd
|
||||
|
||||
subgraph "Docker Host"
|
||||
Dockerd(dockerd<br>守护进程)
|
||||
Containers(Containers<br>容器)
|
||||
Images(Images<br>镜像)
|
||||
|
||||
Dockerd -- 管理 --> Containers
|
||||
Dockerd -- 管理 --> Images
|
||||
end
|
||||
C1["客户端"] -->|docker run| D["dockerd\n守护进程"]
|
||||
C1 -->|docker pull| D
|
||||
D -->|管理| C2["Containers\n容器"]
|
||||
D -->|管理| C3["Images\n镜像"]
|
||||
```
|
||||
|
||||
---
|
||||
@@ -27,11 +20,11 @@ graph LR
|
||||
|
||||
Docker 的内部架构如同洋葱一样分层,每一层专注解决特定问题:
|
||||
|
||||
#### 1. Docker CLI (客户端)
|
||||
#### 1. Docker CLI:客户端
|
||||
|
||||
用户与 Docker 交互的主要方式。它将用户命令 (如 `docker run`) 转换为 API 请求发送给 dockerd。
|
||||
|
||||
#### 2. Dockerd (守护进程)
|
||||
#### 2. Dockerd:守护进程
|
||||
|
||||
Docker 的大脑。
|
||||
|
||||
@@ -39,7 +32,7 @@ Docker 的大脑。
|
||||
- 管理 Docker 对象 (镜像、容器、网络、卷)
|
||||
- 编排下层组件完成工作
|
||||
|
||||
#### 3. Containerd (高级运行时)
|
||||
#### 3. Containerd:高级运行时
|
||||
|
||||
行业标准的容器运行时 (CNCF 毕业项目)。
|
||||
|
||||
@@ -48,7 +41,7 @@ Docker 的大脑。
|
||||
- **不包含** 复杂的与容器无关的功能 (如构建、API)
|
||||
- Kubernetes 也可以直接使用 containerd (跳过 Docker)
|
||||
|
||||
#### 4. Runc (低级运行时)
|
||||
#### 4. Runc:低级运行时
|
||||
|
||||
用于创建和运行容器的 CLI 工具。
|
||||
|
||||
@@ -72,31 +65,24 @@ Docker 的大脑。
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
User((用户))
|
||||
|
||||
subgraph DockerCLI [Docker CLI]
|
||||
Cmd[docker run -d nginx]
|
||||
end
|
||||
|
||||
subgraph DockerHost [Docker Host]
|
||||
Dockerd[Dockerd]
|
||||
Containerd[Containerd]
|
||||
subgraph ContainerRuntime [Runtime]
|
||||
Shim[Containerd-shim]
|
||||
Runc[Runc]
|
||||
Container[容器进程 (nginx)]
|
||||
end
|
||||
end
|
||||
|
||||
User --> Cmd
|
||||
Cmd -- 1. REST API --> Dockerd
|
||||
Dockerd -- 2. gRPC --> Containerd
|
||||
Containerd -- 3. 准备镜像 & Bundle --> Containerd
|
||||
Containerd -- 4. Fork --> Shim
|
||||
Shim -- 5. Exec --> Runc
|
||||
Runc -- 6. Create Namespaces/Cgroups --> Container
|
||||
Runc -.-> |7. Exit| Runc
|
||||
Shim -.-> |8. Monitor IO/Exit| Container
|
||||
U["用户"]
|
||||
K["docker run -d nginx"]
|
||||
D["Dockerd"]
|
||||
C["Containerd"]
|
||||
B["OCI Bundle"]
|
||||
S["Containerd-shim"]
|
||||
R["Runc"]
|
||||
P["容器进程\nnginx"]
|
||||
E["退出"]
|
||||
|
||||
U -->|1. REST API| D
|
||||
K -->|2. gRPC| C
|
||||
C -->|3. 准备镜像和 Bundle| B
|
||||
C -->|4. 启动 Shim| S
|
||||
S -->|5. 执行| R
|
||||
R -->|6. 创建 Namespaces 和 Cgroups| P
|
||||
R -->|7. 进程退出| E
|
||||
S -->|8. 监控 IO 和退出| P
|
||||
```
|
||||
|
||||
1. **CLI** 发送请求给 **Dockerd**
|
||||
|
||||
@@ -60,7 +60,7 @@ COPY . . # 层4:应用代码
|
||||
|
||||
---
|
||||
|
||||
### 12.4.3 Copy-on-Write (写时复制)
|
||||
### 12.4.3 Copy-on-Write:写时复制
|
||||
|
||||
当容器修改只读层中的文件时:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user