Fix ascii figures

This commit is contained in:
Baohua Yang
2026-02-21 10:59:17 -08:00
parent 5ae315c9dd
commit ad68b2d973
7 changed files with 89 additions and 73 deletions

View File

@@ -91,16 +91,15 @@ docker.io/library/ubuntu:24.04
从输出可以看到镜像是**分层下载**
```
┌─────────────────────────────────────────────────────────────┐
ubuntu:24.04 镜像 │
├─────────────────────────────────────────────────────────────┤
第3层 c8299583700a ───────► 已存在,跳过下载 │
├─────────────────────────────────────────────────────────────┤
│ 第2层 be13a9d27eb8 ───────► 下载中... 完成 │
├─────────────────────────────────────────────────────────────┤
第1层 92dc2a97ff99 ───────► 下载中... 完成 │
└─────────────────────────────────────────────────────────────┘
```mermaid
flowchart TD
subgraph Image ["ubuntu:24.04 镜像"]
direction TB
L3["第3层 c8299583700a<br/>(已存在,跳过下载)"]
L2["第2层 be13a9d27eb8<br/>(下载中... 完成)"]
L1["第1层 92dc2a97ff99<br/>(下载中... 完成)"]
L3 --- L2 --- L1
end
```
如果本地已有相同的层Docker 会跳过下载节省带宽和时间

View File

@@ -96,25 +96,26 @@ Deleted: sha256:32770d1dcf835f192cafd6b9263b7b597a1778a403a109e2cc2ee866f74adf23
Docker 会检测镜像是否有容器依赖或其他标签指向只有在确认为无用资源时才会真正删除存储层
```
docker rmi redis:alpine
┌───────────────────────────────────────────────────────────────┐
1. Untag移除 redis:alpine 标签 │
↓ │
│ 2. 检查是否还有其他标签指向这个镜像 │
├── 有 → 只 Untag不删除 │
└── 无 → │
│ ↓ │
│ 3. 检查是否有容器依赖 │
├── 有 → 报错,无法删除 │
└── 无 → │
│ ↓ │
│ 4. 从上到下逐层删除,检查每层是否被其他镜像使用 │
├── 被使用 → 保留 │
└── 未使用 → Deleted │
└───────────────────────────────────────────────────────────────┘
```mermaid
flowchart TD
Start(["docker rmi redis:alpine"]) --> Step1
subgraph Process ["删除流程"]
direction TB
Step1["1. Untag移除 redis:alpine 标签"] --> Step2
Step2{"2. 检查是否还有其他标签指向此镜像"}
Step2 -- "有" --> Keep1["只 Untag不删除"]
Step2 -- "无" --> Step3
Step3{"3. 检查是否有容器依赖"}
Step3 -- "有" --> Error["报错,无法删除"]
Step3 -- "无" --> Step4
Step4{"4. 从上到下逐层删除,检查每层是否被其他镜像使用"}
Step4 -- "被使用" --> Keep2["保留该层"]
Step4 -- "未使用" --> Delete["Deleted (删除该层)"]
end
```
---

View File

@@ -25,16 +25,18 @@ Docker 镜像并不是一个单纯的文件,而是由一组文件系统叠加
当容器启动时Docker 会在镜像的最上层添加一个新的**可写层Writable Layer**通常被称为**容器层**
```
┌──────────────────────────────────────────────┐
容器层 (可写, Writable Container Layer) │ <-- 所有的写操作都在这里
├──────────────────────────────────────────────┤
│ 镜像层 (只读, Read-only Image Layer) │
├──────────────────────────────────────────────┤
镜像层 (只读, Read-only Image Layer)
├──────────────────────────────────────────────┤
│ 基础镜像层 (只读, Base Image Layer)
└──────────────────────────────────────────────┘
```mermaid
flowchart TD
subgraph Container ["运行中的容器"]
direction TB
L4["容器层 (可写, Writable Container Layer)"]
L3["镜像层 (只读, Read-only Image Layer)"]
L2["镜像层 (只读, Read-only Image Layer)"]
L1["基础镜像层 (只读, Base Image Layer)"]
L4 --- L3 --- L2 --- L1
end
Note["所有的写操作都在容器层这里"] -.-> L4
```
* **读取文件**当容器需要读取文件时Docker 会从最上层容器层开始向下层镜像层寻找直到找到该文件为止