mirror of
https://github.com/yeasy/docker_practice.git
synced 2026-03-12 04:41:17 +00:00
Fix space with bold markdown
This commit is contained in:
@@ -27,11 +27,11 @@ graph LR
|
||||
|
||||
Docker 的内部架构如同洋葱一样分层,每一层专注解决特定问题:
|
||||
|
||||
#### 1。Docker CLI (客户端)
|
||||
#### 1. Docker CLI (客户端)
|
||||
|
||||
用户与 Docker 交互的主要方式。它将用户命令 (如 `docker run`) 转换为 API 请求发送给 dockerd。
|
||||
|
||||
#### 2。Dockerd (守护进程)
|
||||
#### 2. Dockerd (守护进程)
|
||||
|
||||
Docker 的大脑。
|
||||
|
||||
@@ -39,16 +39,16 @@ Docker 的大脑。
|
||||
- 管理 Docker 对象 (镜像、容器、网络、卷)
|
||||
- 编排下层组件完成工作
|
||||
|
||||
#### 3。Containerd (高级运行时)
|
||||
#### 3. Containerd (高级运行时)
|
||||
|
||||
行业标准的容器运行时 (CNCF 毕业项目)。
|
||||
|
||||
- 管理容器的完整生命周期 (启动、停止)
|
||||
- 镜像拉取与存储
|
||||
- **不包含**复杂的与容器无关的功能 (如构建、API)
|
||||
- **不包含** 复杂的与容器无关的功能 (如构建、API)
|
||||
- Kubernetes 也可以直接使用 containerd (跳过 Docker)
|
||||
|
||||
#### 4。Runc (低级运行时)
|
||||
#### 4. Runc (低级运行时)
|
||||
|
||||
用于创建和运行容器的 CLI 工具。
|
||||
|
||||
@@ -99,9 +99,12 @@ flowchart TD
|
||||
Shim -.-> |8. Monitor IO/Exit| Container
|
||||
```
|
||||
|
||||
1. **CLI** 发送请求给 **Dockerd**2。**Dockerd** 解析请求,调用 **Containerd**3。**Containerd** 准备镜像,转换为 OCI Bundle
|
||||
1. **CLI** 发送请求给 **Dockerd**
|
||||
2. **Dockerd** 解析请求,调用 **Containerd**
|
||||
3. **Containerd** 准备镜像,转换为 OCI Bundle
|
||||
4. **Containerd** 创建 **Shim** 进程
|
||||
5. **Shim** 调用 **Runc**6。**Runc** 与系统内核交互,创建 Namespaces 和 Cgroups
|
||||
5. **Shim** 调用 **Runc**
|
||||
6. **Runc** 与系统内核交互,创建 Namespaces 和 Cgroups
|
||||
7. **Runc** 启动 nginx 进程后退出
|
||||
8. **Shim** 接管容器 IO 和生命周期监控
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
## 什么是 Namespace
|
||||
|
||||
> **Namespace 是 Linux 内核提供的资源隔离机制,它让容器内的进程仿佛运行在独立的操作系统中。**Namespace 是容器技术的核心基础之一。它回答了一个关键问题:**如何让一个进程 “以为” 自己独占整个系统?**
|
||||
> **Namespace 是 Linux 内核提供的资源隔离机制,它让容器内的进程仿佛运行在独立的操作系统中。** Namespace 是容器技术的核心基础之一。它回答了一个关键问题:**如何让一个进程 “以为” 自己独占整个系统?**
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
@@ -124,7 +124,7 @@ MNT Namespace 负责文件系统挂载点的隔离,确保容器看到独立的
|
||||
|
||||
如下代码块所示,展示了相关示例:
|
||||
|
||||
```
|
||||
```bash
|
||||
宿主机文件系统: 容器内看到的:
|
||||
/ / ← 容器的根目录
|
||||
├── bin/ ├── bin/
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
### 什么是控制组
|
||||
|
||||
控制组 (Control Groups,简称 cgroups) 是 Linux 内核的一个特性,用于**限制、记录和隔离**进程组的资源使用 (CPU、内存、磁盘 I/O、网络等)。
|
||||
控制组 (Control Groups,简称 cgroups) 是 Linux 内核的一个特性,用于 **限制、记录和隔离** 进程组的资源使用 (CPU、内存、磁盘 I/O、网络等)。
|
||||
|
||||
> **核心作用**:让多个容器公平共享宿主机资源,防止单个容器耗尽系统资源。
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
### 什么是联合文件系统
|
||||
|
||||
联合文件系统 (UnionFS) 是一种**分层、轻量级**的文件系统,它将多个目录 “联合” 挂载到同一个虚拟目录,形成一个统一的文件系统视图。
|
||||
联合文件系统 (UnionFS) 是一种 **分层、轻量级** 的文件系统,它将多个目录 “联合” 挂载到同一个虚拟目录,形成一个统一的文件系统视图。
|
||||
|
||||
> **核心思想**:将多个只读层叠加,最上层可写,形成完整的文件系统。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user