Clarify intro chapter

This commit is contained in:
yeasy
2026-04-18 20:25:29 -07:00
parent 029da9f946
commit 787c2adf57
4 changed files with 17 additions and 21 deletions
+3 -3
View File
@@ -2,9 +2,7 @@
本节将通过一个简单的 Web 应用例子带你快速体验 Docker 的核心流程构建镜像运行容器
### 为什么选择 Nginx + HTML 作为入门例子
在学习 Docker 之前我们先来理解为什么这个例子是最适合初学者的Docker 的核心价值在于**一致性交付**无论你在本地云端还是他人的机器上运行容器应用的行为都是完全一致的这个 Nginx + 静态 HTML 的例子之所以被广泛采用是因为它展现了 Docker 工作流的三个核心阶段
在学习 Docker 之前我们先来理解为什么这个例子适合初学者Docker 的核心价值在于 **一致性交付**无论你在本地云端还是他人的机器上运行容器应用的行为都应该保持一致这个 Nginx + 静态 HTML 的例子之所以被广泛采用是因为它展现了 Docker 工作流的三个核心阶段
1. **镜像定义Image Layer**通过 Dockerfile 描述如何把应用打包成一个自包含的单元
2. **镜像构建Build**执行 `docker build`Docker 根据 Dockerfile 逐层构建镜像
@@ -29,6 +27,8 @@ FROM nginx:alpine
COPY index.html /usr/share/nginx/html/index.html
```
这里的 `/usr/share/nginx/html/` Nginx 官方镜像默认提供静态页面的目录 `index.html` 复制到这个位置后Nginx 启动时就会直接对外提供该页面因此这个例子能把准备文件 -> 打包镜像 -> 启动服务的最短路径展示得很清楚
### 1.1.3 构建镜像
打开终端进入该目录执行构建命令
+3 -5
View File
@@ -79,9 +79,7 @@ Docker 使用 [Go 语言](https://golang.google.cn/)开发,基于 Linux 内核
> 如果你对这些底层技术感兴趣可以阅读本书的[底层实现](../12_implementation/README.md)章节
#### Docker 架构演进
Docker 的底层实现经历了多次演进
**Docker 架构演进**Docker 的底层实现经历了多次演进
```mermaid
flowchart LR
@@ -106,13 +104,13 @@ flowchart LR
### 1.2.5 Docker 的历史与生态
**Docker** 最初是 `dotCloud` 公司创始人 [Solomon Hykes](https://github.com/shykes) 在法国期间发起的一个公司内部项目,于 [2013 年 3 月以 Apache 2.0 授权协议开源](https://en.wikipedia.org/wiki/Docker_%28software%29)。
**Docker** 最初是 `dotCloud` 公司创始人 [Solomon Hykes](https://github.com/shykes) 发起的一个公司内部项目,于 [2013 年 3 月以 Apache 2.0 授权协议开源](https://en.wikipedia.org/wiki/Docker_%28software%29)。
Docker 的发展历程
- **2013 3 **开源发布
- **2013 年底**dotCloud 公司改名为 DockerInc
- **2015 **成立[开放容器联盟 (OCI)](https://opencontainers.org/),推动容器标准化
- **至今**[GitHub 项目](https://github.com/moby/moby)超过 7 万星标
- **截至 2026 4 **[GitHub 项目](https://github.com/moby/moby)超过 7 万星标
Docker 的成功推动了整个容器生态的发展催生了 KubernetesPodman 等众多相关项目笔者认为Docker 最大的贡献不仅是技术本身更是它 **让容器技术从系统管理员的工具变成了每个开发者都能使用的标准工具**
+10 -12
View File
@@ -45,9 +45,7 @@
### 1.3.2 Docker 如何解决这些问题
Docker 的出现为上述问题提供了完美的解决方案它通过 一次构建到处运行 的核心理念从根本上改变了软件交付的方式
#### 核心理念一次构建到处运行
Docker 的出现为上述问题提供了系统性的解决方案它通过 一次构建到处运行 的核心理念从根本上改变了软件交付的方式
```mermaid
flowchart LR
@@ -101,27 +99,27 @@ $ docker compose up
#### 3. 资源效率
Docker 容器共享宿主机内核无需为每个应用运行完整的操作系统以一台 64GB 内存的物理服务器为例
- **传统虚拟机方案**每个虚拟机都需要运行完整操作系统每个额外占用如 2GB 内存产生大量资源开销实际可用于应用的内存可能只有约 18GB
- **Docker 方案**容器直接共享宿主机系统需付出很少的基础开销OS 及引擎约 4GB即可将约 60GB 的内存全部用于实际应用
- **传统虚拟机方案**每个虚拟机都需要额外运行一套完整操作系统会带来持续的基础资源开销随着实例数增加可真正分配给业务进程的内存会被不断压缩
- **Docker 方案**容器直接共享宿主机系统保留宿主机和容器引擎的基础开销因此通常能把更多内存留给实际业务负载
```mermaid
flowchart TD
subgraph VM ["传统虚拟机方案 ❌"]
direction TB
Server1["物理服务器 (64GB 内存)"]
subgraph VMs ["可用应用内存: 约 18GB"]
subgraph VMs ["可用应用内存: 较少"]
direction LR
VM1["VM 1: 应用 1<br/>(含 2GB OS)"]
VM2["VM 2: 应用 2<br/>(含 2GB OS)"]
VM3["VM 3: 应用 3<br/>(含 2GB OS)"]
VM1["VM 1: 应用 1<br/>(含独立 OS 开销)"]
VM2["VM 2: 应用 2<br/>(含独立 OS 开销)"]
VM3["VM 3: 应用 3<br/>(含独立 OS 开销)"]
end
Server1 --- VMs
end
subgraph Docker ["Docker 方案 ✅"]
direction TB
Server2["物理服务器 (64GB 内存)<br/>含约 4GB OS及引擎配置"]
subgraph Containers ["可用应用内存: 约 60GB"]
Server2["物理服务器 (64GB 内存)<br/>含宿主 OS 与引擎基础开销"]
subgraph Containers ["可用应用内存: 更多"]
direction LR
C1["容器 1: 应用 1<br/>(按需分配)"]
C2["容器 2: 应用 2<br/>(按需分配)"]
@@ -160,7 +158,7 @@ Docker 可以在几乎任何平台上运行:
#### 6. 微服务架构的基石
现代微服务架构几乎都依赖容器技术Docker 让你可以
现代微服务实践大量采用容器技术作为交付基础Docker 让你可以先把每个服务标准化封装而在更大规模场景下通常还需要配合编排服务发现网络治理和可观测性体系一起落地
- **隔离服务**每个服务运行在独立容器中互不干扰
- **独立扩展**哪个服务负载高就单独扩展哪个
+1 -1
View File
@@ -2,7 +2,7 @@
本章将带领你进入 **Docker** 的世界
> **版本提示**本书内容及示例基于 **Docker Engine v29.x** 及以上版本值得注意的是 Docker Engine v29 官方在全新安装场景下 **默认启用 `containerd image store` 作为镜像存储后端**取代传统 classic store 路径下的 graph driver 体系这项底层革新极大增强了 Docker 对多架构镜像Multi-platform以及软件供应链安全元数据Attestations, SBOM, Provenance的本地支持原生性
> **版本提示**本书内容及示例基于 **Docker Engine v29.x** 及以上版本 Docker Engine v29 全新安装默认启用 `containerd image store` 作为镜像存储后端这意味着后续涉及多架构镜像本地镜像元数据和供应链安全能力的章节会以这一路径为背景展开说明
## 本章内容