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

@@ -27,7 +27,7 @@ flowchart TD
对于 Linux 而言内核启动后会挂载 `root` 文件系统来提供用户空间支持**Docker 镜像**本质上就是一个 `root` 文件系统
例如官方镜像 `ubuntu:24.04` 包含了一套完整的 Ubuntu 24.04 最小系统的 root 文件系统**不包含 Linux 内核**因为容器共享宿主机的内核
例如官方镜像 `ubuntu:24.04` 包含了一套完整的 Ubuntu 24.04 最小系统的 root 文件系统**不包含 Linux 内核** (因为容器共享宿主机的内核)
### 镜像包含什么
@@ -107,7 +107,7 @@ flowchart TD
- **可共享**多个镜像可以共享相同的层
- **有缓存**未变化的层不会重新构建
#### 分层存储的"陷阱"
#### 分层存储的 陷阱
> **笔者特别提醒**理解这一点可以帮你避免构建出臃肿的镜像**关键原理**每一层的文件变化会被记录**删除操作只是标记不会真正减小镜像体积**
@@ -159,7 +159,7 @@ a6bd71f48f68 2 weeks ago CMD ["nginx" "-g" "daemon off;"] 0B
Docker 镜像有多种标识方式
#### 1. 镜像名称和标签
#### 1镜像名称和标签
格式`[仓库地址/]仓库名[:标签]`
@@ -178,7 +178,7 @@ ubuntu:24.04
nginx # 等同于 nginx:latest
```
#### 2. 镜像 IDContent-Addressable
#### 2镜像 ID (Content-Addressable)
每个镜像有一个基于内容计算的唯一 ID
@@ -189,7 +189,7 @@ nginx latest a6bd71f48f68 2 weeks ago 187MB
ubuntu 24.04 ca2b0f26964c 3 weeks ago 78.1MB
```
#### 3. 镜像摘要Digest
#### 3镜像摘要
更精确的标识基于镜像内容的 SHA256 哈希

View File

@@ -4,7 +4,7 @@
### 一句话理解容器
> **容器是镜像的运行实例如果把镜像比作程序那么容器就是进程**用面向对象编程的术语来说**镜像是类Class容器是对象Instance**
> **容器是镜像的运行实例如果把镜像比作程序那么容器就是进程**用面向对象编程的术语来说**镜像是类 (Class)容器是对象 (Instance)**
- 一个镜像可以创建多个容器
- 每个容器相互独立互不影响
@@ -78,7 +78,7 @@ flowchart TD
#### 镜像层 + 容器层
当容器运行时Docker 会在镜像的只读层之上创建一个**可写层**容器存储层
当容器运行时Docker 会在镜像的只读层之上创建一个**可写层** (容器存储层)
```mermaid
flowchart TD
@@ -91,7 +91,7 @@ flowchart TD
ContainerLayer --> ImageLayerN --> ImageLayerN1 --> Dots --> ImageLayer1
```
#### Copy-on-Write写时复制
#### Copy-on-Write (写时复制)
当容器需要修改镜像层中的文件时
@@ -166,6 +166,10 @@ stateDiagram-v2
2-1 容器生命周期状态流转图
#### 概述
总体概述了以下内容
#### 常用生命周期命令
运行以下命令
@@ -198,7 +202,7 @@ $ docker rm -f abc123 # 强制删除运行中的容器
### 容器与进程的关系
> **核心概念**容器的生命周期 = 主进程PID 1的生命周期
> **核心概念**容器的生命周期 = 主进程 (PID 1) 的生命周期
```bash
## 主进程运行,容器运行

View File

@@ -10,7 +10,7 @@ Docker Registry 是镜像分发和管理的核心组件。本节将介绍 Regist
### 核心概念
要熟练使用 Docker Registry首先需要理清它与仓库Repository标签Tag之间的关系
要熟练使用 Docker Registry首先需要理清它与仓库 (Repository)标签 (Tag) 之间的关系
#### Registry仓库标签的关系
@@ -43,6 +43,8 @@ flowchart TB
2-2 RegistryRepository Tag 的层级关系
相关基本概念具体如下
| 概念 | 说明 | 示例 |
|------|------|------|
| **Registry** | 存储镜像的服务 | Docker Hubghcr.io |
@@ -51,7 +53,7 @@ flowchart TB
#### 镜像的完整名称
一个完整的 Docker 镜像名称由 Registry 地址用户名/组织名仓库名和标签组成了解其结构有助于我们更准确地定位镜像
一个完整的 Docker 镜像名称由 Registry 地址用户名/组织名仓库名和标签组成了解其结构有助于我们更准确地定位镜像基本格式如下
```
[registry地址/][用户名/]仓库名[:标签]
@@ -90,12 +92,13 @@ gcr.io/google-containers/pause:3.6
公共 Registry 服务为开发者提供了便捷的镜像获取途径其中最著名的是 Docker Hub
#### Docker Hub默认
#### 默认的 Docker Hub
[Docker Hub](https://hub.docker.com/) 是最大的公共 Registry也是 Docker 的默认 Registry。
**特点**
- 拥有大量[官方镜像](https://hub.docker.com/search?q=&type=image&image_filter=official)nginx、mysql、redis 等)
- 拥有大量[官方镜像](https://hub.docker.com/search?q=&type=image&image_filter=official) (nginx、mysql、redis 等)
- 免费账户可以创建公开仓库
- 付费账户支持私有仓库
@@ -113,6 +116,8 @@ $ docker push username/myapp:v1.0
#### 其他公共 Registry
除了 Docker Hub还有以下几个常见的公共 Registry
| Registry | 地址 | 说明 |
|----------|------|------|
| **GitHub Container Registry** | ghcr.io | GitHub 提供 GitHub Actions 集成好 |
@@ -123,7 +128,7 @@ $ docker push username/myapp:v1.0
### 镜像加速器
由于网络原因在国内直接访问 Docker Hub 可能会很慢可以配置**镜像加速器**Registry Mirror来加速下载
由于网络原因在国内直接访问 Docker Hub 可能会很慢可以配置**镜像加速器** (Registry Mirror) 来加速下载配置示例如下
```json
// /etc/docker/daemon.json
@@ -172,13 +177,14 @@ $ docker pull localhost:5000/myapp:v1.0
| **云厂商服务** | 阿里云 ACR腾讯云 TCRAWS ECR |
笔者建议
- 小团队可以先用官方 Registry够用即可
- 中大型团队推荐 Harbor功能完善且开源免费
- 已使用云服务直接用云厂商的 Registry 服务更省心
### 镜像的推送和拉取
掌握镜像的推送Push和拉取Pull是使用 Docker Registry 的基本功
掌握镜像的推送 (Push) 和拉取 (Pull) 是使用 Docker Registry 的基本功
#### 完整工作流程
@@ -235,7 +241,7 @@ $ docker logout
#### 使用官方镜像
Docker Hub [官方镜像](https://hub.docker.com/search?q=&type=image&image_filter=official)标有 "Official Image" 标识经过 Docker 团队审核,相对更安全。
Docker Hub [官方镜像](https://hub.docker.com/search?q=&type=image&image_filter=official) (标有 Official Image 标识) 经过 Docker 团队审核,相对更安全。示例如下:
```bash
## 官方镜像示例

View File

@@ -1,9 +1,9 @@
# 第二章 基本概念
# 第二章基本概念
**Docker** 包括三个基本概念
* **镜像**`Image`Docker 镜像是一个特殊的文件系统除了提供容器运行时所需的程序资源配置等文件外还包含了一些为运行时准备的一些配置参数如匿名卷环境变量用户等镜像不包含任何动态数据其内容在构建之后也不会被改变
* **容器**`Container`镜像`Image`和容器`Container`的关系就像是面向对象程序设计中的 `` `实例` 一样镜像是静态的定义容器是镜像运行时的实体容器可以被创建启动停止删除暂停等
* **仓库**`Repository`镜像构建完成后可以很容易的在当前宿主机上运行但是如果需要在其它服务器上使用这个镜像我们就需要一个集中的存储分发镜像的服务Docker Registry 就是这样的服务
* **镜像** (`Image`)Docker 镜像是一个特殊的文件系统除了提供容器运行时所需的程序资源配置等文件外还包含了一些为运行时准备的一些配置参数 (如匿名卷环境变量用户等)镜像不包含任何动态数据其内容在构建之后也不会被改变
* **容器** (`Container`)镜像 (`Image`) 和容器 (`Container`) 的关系就像是面向对象程序设计中的 `` `实例` 一样镜像是静态的定义容器是镜像运行时的实体容器可以被创建启动停止删除暂停等
* **仓库** (`Repository`)镜像构建完成后可以很容易的在当前宿主机上运行但是如果需要在其它服务器上使用这个镜像我们就需要一个集中的存储分发镜像的服务Docker Registry 就是这样的服务
理解了这三个概念就理解了 **Docker** 的整个生命周期

View File

@@ -29,7 +29,7 @@
### 延伸阅读
- [启动容器](../05_container/5.1_run.md)详细的容器启动选项
- [后台运行](../05_container/5.2_daemon.md)理解容器为什么会"立即退出"
- [后台运行](../05_container/5.2_daemon.md)理解容器为什么会 立即退出
- [进入容器](../05_container/5.4_attach_exec.md)如何操作运行中的容器
- [数据管理](../08_data_network/README.md)Volume 和数据持久化详解