style: apply global formatting fixes (struct, spacing, zhlint)

This commit is contained in:
Baohua Yang
2026-02-21 11:08:52 -08:00
parent ad68b2d973
commit 79ac9c639a
159 changed files with 1708 additions and 882 deletions

View File

@@ -1,12 +1,12 @@
## 1.3 为什么要使用 Docker
在回答"为什么用 Docker"之前笔者想先问一个问题**你有没有经历过这些场景**
在回答 为什么用 Docker 之前笔者想先问一个问题**你有没有经历过这些场景**
### 没有 Docker 的世界
Docker 出现之前软件开发和运维面临着诸多棘手的问题我们先来看看以下三个典型的痛点场景
#### 场景一"在我电脑上明明能跑"
#### 场景一在我电脑上明明能跑
具体内容如下
@@ -20,10 +20,10 @@
笔者统计过这个问题通常由以下原因导致
- Python/Node/Java 版本不一致
- 依赖库版本不一致
- 依赖库版本不一致
- 操作系统配置不一致
- 某些环境变量没有设置
- "哦,忘了说我本地装了个 XXX"
- 忘了说我本地装了个 XXX
#### 场景二环境配置的噩梦
@@ -51,7 +51,11 @@
### Docker 如何解决这些问题
Docker 的出现为上述问题提供了完美的解决方案它通过"一次构建,到处运行"的核心理念从根本上改变了软件交付的方式
Docker 的出现为上述问题提供了完美的解决方案它通过 一次构建到处运行 的核心理念从根本上改变了软件交付的方式
#### 概述
总体概述了以下内容
#### 核心理念一次构建到处运行
@@ -74,12 +78,12 @@ flowchart TD
除了解决上述痛点Docker 还拥有诸多显著的技术优势包括环境一致性秒级启动高效的资源利用等
#### 1. 环境一致性
#### 1环境一致性
Docker 镜像包含了应用运行所需的**一切**代码运行时系统工具配置这意味着
- 开发环境和生产环境完全一致
- 不会再有"在我机器上能跑"的问题
- 不会再有 在我机器上能跑 的问题
- 新人入职一条命令就能启动开发环境
```bash
@@ -92,9 +96,9 @@ $ docker compose up
...
```
#### 2. 秒级启动
#### 2秒级启动
传统虚拟机启动需要几分钟引导操作系统 Docker 容器启动通常只需要**几秒甚至几百毫秒**
传统虚拟机启动需要几分钟 (引导操作系统) Docker 容器启动通常只需要**几秒甚至几百毫秒**
笔者实测数据
@@ -109,7 +113,7 @@ $ docker compose up
- **弹性扩容**流量高峰时能快速启动更多实例
- **开发体验**快速重启服务进行调试
#### 3. 资源效率
#### 3资源效率
Docker 容器共享宿主机内核无需为每个应用运行完整的操作系统
@@ -140,7 +144,7 @@ flowchart TD
end
```
#### 4. 持续交付和部署
#### 4持续交付和部署
Docker 完美契合 DevOps 的工作流程
@@ -156,17 +160,17 @@ flowchart LR
- 任何人都能从代码重建完全相同的镜像
- 配合 [GitHub Actions](../15_cases/ci/actions/README.md) CI 系统实现自动化
#### 5. 轻松迁移
#### 5轻松迁移
Docker 可以在几乎任何平台上运行
- 本地开发机macOSWindowsLinux
- 公有云AWSAzureGCP阿里云腾讯云
- 本地开发机 (macOSWindowsLinux)
- 公有云 (AWSAzureGCP阿里云腾讯云)
- 私有云和自建数据中心
- 边缘设备和 IoT
**同一个镜像在任何地方运行结果都一致** 这让应用迁移变得前所未有的简单
**同一个镜像在任何地方运行结果都一致**这让应用迁移变得前所未有的简单
#### 6. 微服务架构的基石
#### 6微服务架构的基石
现代微服务架构几乎都依赖容器技术Docker 让你可以
@@ -200,19 +204,19 @@ flowchart TD
笔者认为技术选型要客观Docker 并非银弹以下场景可能不太适合
#### 1. 需要完全隔离的场景
#### 1需要完全隔离的场景
容器共享宿主机内核隔离性不如虚拟机如果你需要运行不受信任的代码虚拟机可能更安全
#### 2. 需要特殊内核的场景
#### 2需要特殊内核的场景
容器使用宿主机内核如果应用需要特定版本的内核或内核模块可能需要虚拟机
#### 3. Windows 原生应用
#### 3Windows 原生应用
虽然 Docker 支持 Windows 容器但生态不如 Linux 容器成熟传统 Windows 应用的容器化仍有挑战
#### 4. 桌面应用
#### 4桌面应用
Docker 主要面向服务端应用桌面 GUI 应用的容器化虽然可行但通常得不偿失