mirror of
https://github.com/yeasy/docker_practice.git
synced 2026-03-11 20:31:18 +00:00
style(docs): standardize heading formats and numbering
- Enforce Level 1-3 structural numbering based on SUMMARY.md hierarchy - Remove structural numbering from Level 4+ headings - Eliminate single child headings by converting to bold text - Auto-inject summary text for headings with multiple children missing intro text - Exclude Appendix chapters from structural numbering - Avoid modifying code block contents - Add script to detect non-standard English usage in headers
This commit is contained in:
@@ -2,11 +2,11 @@
|
||||
|
||||
Docker 镜像作为容器运行的基石,其设计理念和实现机制至关重要。本节将深入探讨镜像的本质、与操作系统的关系、内容构成以及核心的分层存储机制。
|
||||
|
||||
### 一句话理解镜像
|
||||
### 2.1.1 一句话理解镜像
|
||||
|
||||
> **Docker 镜像是一个只读的模板,包含了运行应用所需的一切:代码、运行时、库、环境变量和配置文件。** 如果用一个类比:**镜像就像是一张光盘或 ISO 文件**。你可以用同一张光盘在不同电脑上安装系统,而光盘本身不会被修改。同样,一个镜像可以创建多个容器,而镜像本身保持不变。
|
||||
|
||||
### 镜像与操作系统的关系
|
||||
### 2.1.2 镜像与操作系统的关系
|
||||
|
||||
我们都知道,操作系统分为 **内核** 和 **用户空间**:
|
||||
|
||||
@@ -29,7 +29,7 @@ flowchart TD
|
||||
|
||||
例如,官方镜像 `ubuntu:24.04` 包含了一套完整的 Ubuntu 24.04 最小系统的 root 文件系统——但 **不包含 Linux 内核** (因为容器共享宿主机的内核)。
|
||||
|
||||
### 镜像包含什么?
|
||||
### 2.1.3 镜像包含什么?
|
||||
|
||||
Docker 镜像是一个特殊的文件系统,包含:
|
||||
|
||||
@@ -44,7 +44,7 @@ Docker 镜像是一个特殊的文件系统,包含:
|
||||
- ✅ 镜像 **不包含** 动态数据
|
||||
- ✅ 镜像构建后 **内容不会改变**
|
||||
|
||||
### 分层存储:镜像的核心设计
|
||||
### 2.1.4 分层存储:镜像的核心设计
|
||||
|
||||
镜像的分层存储机制是 Docker 最具创新性的特性之一。通过 Union FS 技术,Docker 能够高效地构建和管理镜像。
|
||||
|
||||
@@ -156,7 +156,7 @@ a6bd71f48f68 2 weeks ago CMD ["nginx" "-g" "daemon off;"] 0B
|
||||
...
|
||||
```
|
||||
|
||||
### 镜像的标识
|
||||
### 2.1.5 镜像的标识
|
||||
|
||||
Docker 镜像有多种标识方式:
|
||||
|
||||
@@ -202,7 +202,7 @@ nginx latest sha256:6db391d1c0cfb30588ba0bf72ea999404f2764184d8b8d10d89e8
|
||||
|
||||
> 💡 笔者建议:在生产环境使用镜像摘要而非标签,因为标签可以被覆盖,但摘要是不可变的。
|
||||
|
||||
### 镜像的来源
|
||||
### 2.1.6 镜像的来源
|
||||
|
||||
Docker 镜像可以通过以下方式获取:
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
容器是 Docker 技术的核心,是应用实际运行的载体。本节将从容器的本质、与虚拟机的区别、存储层机制以及生命周期管理等方面,全面解析 Docker 容器。
|
||||
|
||||
### 一句话理解容器
|
||||
### 2.2.1 一句话理解容器
|
||||
|
||||
> **容器是镜像的运行实例。如果把镜像比作程序,那么容器就是进程。** 用面向对象编程的术语来说:**镜像是类 (Class),容器是对象 (Instance)**。
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
- 每个容器相互独立,互不影响
|
||||
- 容器可以被创建、启动、停止、删除、暂停
|
||||
|
||||
### 容器的本质
|
||||
### 2.2.2 容器的本质
|
||||
|
||||
> 💡 **笔者认为,理解这一点是理解 Docker 的关键****容器的本质是一个特殊的进程。**
|
||||
|
||||
@@ -29,7 +29,7 @@ flowchart TD
|
||||
|
||||
这种隔离是通过 Linux 内核的 **Namespace** 技术实现的。
|
||||
|
||||
### 容器 vs 虚拟机:核心区别
|
||||
### 2.2.3 容器 vs 虚拟机:核心区别
|
||||
|
||||
很多初学者会混淆容器和虚拟机。笔者用一张图来说明:
|
||||
|
||||
@@ -72,7 +72,7 @@ flowchart TD
|
||||
| **性能损耗** | 几乎为零 | 5-20% |
|
||||
| **内核** | 共享宿主机内核 | 各自独立内核 |
|
||||
|
||||
### 容器的存储层
|
||||
### 2.2.4 容器的存储层
|
||||
|
||||
理解容器的存储层机制对于数据的持久化和镜像的优化至关重要。本节将介绍容器的可写层以及 Copy-on-Write 机制。
|
||||
|
||||
@@ -144,7 +144,7 @@ $ docker run -v /host/path:/container/path nginx
|
||||
|
||||
这些位置的读写 **会跳过容器存储层**,直接写入宿主机,性能更好,也不会随容器删除而丢失。
|
||||
|
||||
### 容器的生命周期
|
||||
### 2.2.5 容器的生命周期
|
||||
|
||||
掌握容器的生命周期对于管理和调试 Docker 应用非常重要。如图 2-1 所示,容器会经历从创建到删除的完整状态流转。
|
||||
|
||||
@@ -200,7 +200,7 @@ $ docker rm abc123 # 删除已停止的容器
|
||||
$ docker rm -f abc123 # 强制删除运行中的容器
|
||||
```
|
||||
|
||||
### 容器与进程的关系
|
||||
### 2.2.6 容器与进程的关系
|
||||
|
||||
> **核心概念**:容器的生命周期 = 主进程 (PID 1) 的生命周期
|
||||
|
||||
@@ -225,7 +225,7 @@ $ docker run nginx
|
||||
|
||||
详细解释请参考[后台运行](../05_container/5.2_daemon.md)章节。
|
||||
|
||||
### 容器的隔离性
|
||||
### 2.2.7 容器的隔离性
|
||||
|
||||
Docker 容器通过以下 Namespace 实现隔离:
|
||||
|
||||
|
||||
@@ -2,13 +2,13 @@
|
||||
|
||||
Docker Registry 是镜像分发和管理的核心组件。本节将介绍 Registry 的基本概念、公共和私有服务的选择,以及镜像的安全管理。
|
||||
|
||||
### 一句话理解 Registry
|
||||
### 2.3.1 一句话理解 Registry
|
||||
|
||||
> **Docker Registry 是存储和分发 Docker 镜像的服务,类似于代码的 GitHub 或包管理的 npm。**
|
||||
|
||||
镜像构建完成后,可以在当前机器上运行。但如果需要在其他服务器上使用这个镜像,就需要一个集中的存储和分发服务——这就是 Docker Registry。
|
||||
|
||||
### 核心概念
|
||||
### 2.3.2 核心概念
|
||||
|
||||
要熟练使用 Docker Registry,首先需要理清它与仓库 (Repository)、标签 (Tag) 之间的关系。
|
||||
|
||||
@@ -88,7 +88,7 @@ gcr.io/google-containers/pause:3.6
|
||||
|
||||
> 💡 **笔者提示**:如果不指定 Registry 地址,默认使用 Docker Hub。如果不指定标签,默认使用 `latest`。
|
||||
|
||||
### 公共 Registry 服务
|
||||
### 2.3.3 公共 Registry 服务
|
||||
|
||||
公共 Registry 服务为开发者提供了便捷的镜像获取途径。其中最著名的是 Docker Hub。
|
||||
|
||||
@@ -126,7 +126,7 @@ $ docker push username/myapp:v1.0
|
||||
| **阿里云容器镜像服务** | registry.cn-*.aliyuncs.com | 国内访问快 |
|
||||
| **腾讯云容器镜像服务** | ccr.ccs.tencentyun.com | 国内访问快 |
|
||||
|
||||
### 镜像加速器
|
||||
### 2.3.4 镜像加速器
|
||||
|
||||
由于网络原因,在国内直接访问 Docker Hub 可能会很慢。可以配置 **镜像加速器** (Registry Mirror) 来加速下载。配置示例如下:
|
||||
|
||||
@@ -143,7 +143,7 @@ $ docker push username/myapp:v1.0
|
||||
|
||||
> ⚠️ **笔者提醒**:镜像加速器的可用性经常变化,使用前建议先测试是否可用。
|
||||
|
||||
### 私有 Registry
|
||||
### 2.3.5 私有 Registry
|
||||
|
||||
出于安全和隐私的考虑,企业往往需要搭建自己的私有 Registry。以下是几种常见的搭建方案。
|
||||
|
||||
@@ -182,7 +182,7 @@ $ docker pull localhost:5000/myapp:v1.0
|
||||
- 中大型团队:推荐 Harbor,功能完善且开源免费
|
||||
- 已使用云服务:直接用云厂商的 Registry 服务更省心
|
||||
|
||||
### 镜像的推送和拉取
|
||||
### 2.3.6 镜像的推送和拉取
|
||||
|
||||
掌握镜像的推送 (Push) 和拉取 (Pull) 是使用 Docker Registry 的基本功。
|
||||
|
||||
@@ -235,7 +235,7 @@ $ docker push registry.example.com/myteam/myapp:v1.0
|
||||
$ docker logout
|
||||
```
|
||||
|
||||
### 镜像的安全性
|
||||
### 2.3.7 镜像的安全性
|
||||
|
||||
在使用公共镜像或维护私有镜像时,安全性是不容忽视的重要环节。
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
## 本章小结
|
||||
## 2.4 本章小结
|
||||
|
||||
相关信息如下表:
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
|
||||
理解了镜像,接下来让我们学习[容器](2.2_container.md)——镜像的运行实例。
|
||||
|
||||
### 延伸阅读
|
||||
### 2.4.1 延伸阅读
|
||||
|
||||
- [获取镜像](../04_image/4.1_pull.md):从 Registry 下载镜像
|
||||
- [使用 Dockerfile 定制镜像](../04_image/4.5_build.md):创建自己的镜像
|
||||
@@ -28,7 +28,7 @@
|
||||
|
||||
理解了镜像和容器,接下来让我们学习[仓库](2.3_repository.md)——存储和分发镜像的服务。
|
||||
|
||||
### 延伸阅读
|
||||
### 2.4.2 延伸阅读
|
||||
|
||||
- [启动容器](../05_container/5.1_run.md):详细的容器启动选项
|
||||
- [后台运行](../05_container/5.2_daemon.md):理解容器为什么会 “立即退出”
|
||||
@@ -45,7 +45,7 @@
|
||||
|
||||
现在你已经了解了 Docker 的三个核心概念:[镜像](2.1_image.md)、[容器](2.2_container.md)和仓库。接下来,让我们开始[安装 Docker](../03_install/README.md),动手实践!
|
||||
|
||||
### 延伸阅读
|
||||
### 2.4.3 延伸阅读
|
||||
|
||||
- [Docker Hub](../06_repository/6.1_dockerhub.md):Docker Hub 的详细使用
|
||||
- [私有仓库](../06_repository/6.2_registry.md):搭建私有 Registry
|
||||
|
||||
Reference in New Issue
Block a user