From 094965e0395b0d83bccd8852733d365f98c93391 Mon Sep 17 00:00:00 2001 From: yeasy Date: Sun, 31 May 2026 22:20:50 -0700 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=BC=96=E8=BE=91=E9=97=AE?= =?UTF-8?q?=E9=A2=98=EF=BC=9A=E9=94=99=E5=88=AB=E5=AD=97/=E8=AF=AD?= =?UTF-8?q?=E7=97=85/=E6=9C=AF=E8=AF=AD/=E6=A0=87=E7=82=B9=E7=AD=89=2025?= =?UTF-8?q?=20=E5=A4=84=EF=BC=88=E8=87=AA=E5=8A=A8=E5=AE=A1=E6=A0=A1?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 01_introduction/1.2_what.md | 2 +- 04_image/4.5_build.md | 2 +- 04_image/4.6_other.md | 2 +- 11_compose/11.5_compose_file.md | 2 +- 11_compose/11.8_wordpress.md | 2 +- 13_kubernetes_concepts/13.2_concepts.md | 2 +- 13_kubernetes_concepts/13.3_design.md | 2 +- 14_kubernetes_setup/14.4_kind.md | 2 +- 15_etcd/15.4_etcdctl.md | 2 +- 16_cloud/16.3_alicloud.md | 2 +- 16_cloud/16.4_aws.md | 2 +- 17_ecosystem/17.8_wasm.md | 2 +- 20_cases_os/20.1_busybox.md | 2 +- 20_cases_os/20.2_alpine.md | 8 ++++---- 20_cases_os/20.3_debian.md | 2 +- 20_cases_os/20.4_centos.md | 2 +- appendix/best_practices.md | 2 +- appendix/command/docker.md | 4 ++-- appendix/faq/README.md | 2 +- appendix/learning_roadmap.md | 2 +- appendix/repo/minio.md | 2 +- 21 files changed, 25 insertions(+), 25 deletions(-) diff --git a/01_introduction/1.2_what.md b/01_introduction/1.2_what.md index feee7cc..3998dd8 100644 --- a/01_introduction/1.2_what.md +++ b/01_introduction/1.2_what.md @@ -112,7 +112,7 @@ flowchart LR Docker 的发展历程: - **2013 年 3 月**:开源发布 -- **2013 年底**:dotCloud 公司改名为 Docker,Inc。 +- **2013 年底**:dotCloud 公司改名为 Docker, Inc. - **2015 年**:成立[开放容器联盟 (OCI)](https://opencontainers.org/),推动容器标准化 - **至今**:[GitHub 项目](https://github.com/moby/moby)超过 7 万星标 diff --git a/04_image/4.5_build.md b/04_image/4.5_build.md index 1d106e2..9d1df24 100644 --- a/04_image/4.5_build.md +++ b/04_image/4.5_build.md @@ -180,4 +180,4 @@ cat Dockerfile | docker build - ```bash $ docker build - < context.tar.gz ``` -如果发现标准输入的文件格式是 `gzip`、`bzip2` 以及 `xz` 的话,将会使其为上下文压缩包,直接将其展开,将里面视为上下文,并开始构建。 +如果发现标准输入的文件格式是 `gzip`、`bzip2` 以及 `xz` 的话,将会将其视为上下文压缩包,直接将其展开,将里面视为上下文,并开始构建。 diff --git a/04_image/4.6_other.md b/04_image/4.6_other.md index 71fd533..174e3cc 100644 --- a/04_image/4.6_other.md +++ b/04_image/4.6_other.md @@ -70,7 +70,7 @@ filename: POSIX tar archive ```bash $ docker save alpine | gzip > alpine-latest.tar.gz ``` -然后我们将 `alpine-latest.tar.gz` 文件复制到了到了另一个机器上,可以用下面这个命令加载镜像: +然后我们将 `alpine-latest.tar.gz` 文件复制到了另一个机器上,可以用下面这个命令加载镜像: ```bash $ docker load -i alpine-latest.tar.gz diff --git a/11_compose/11.5_compose_file.md b/11_compose/11.5_compose_file.md index 39a5810..1c44136 100644 --- a/11_compose/11.5_compose_file.md +++ b/11_compose/11.5_compose_file.md @@ -55,7 +55,7 @@ build: ### 11.5.2 `cap_add, cap_drop` -指定容器的内核能力 (capacity) 分配。 +指定容器的内核能力 (capability) 分配。 例如,让容器拥有所有能力可以指定为: diff --git a/11_compose/11.8_wordpress.md b/11_compose/11.8_wordpress.md index e1aaa36..c1e67a4 100644 --- a/11_compose/11.8_wordpress.md +++ b/11_compose/11.8_wordpress.md @@ -1,7 +1,7 @@ ## 11.8 实战 WordPress > **版本说明**:本示例使用以下镜像版本: -> - MySQL:8.0(可替换为其他 8.x 版本,或使用 MariaDB 替代) +> - MySQL:8.4(可替换为其他 8.x 版本,或使用 MariaDB 替代) > - WordPress:latest(建议在生产环境指定具体版本,如 6.x) WordPress 是全球最流行的内容管理系统 (CMS)。使用 Docker Compose 可以在几分钟内搭建一个包含数据库、Web 服务和持久化存储的生产级 WordPress 环境。 diff --git a/13_kubernetes_concepts/13.2_concepts.md b/13_kubernetes_concepts/13.2_concepts.md index 3faee36..dc17d6d 100644 --- a/13_kubernetes_concepts/13.2_concepts.md +++ b/13_kubernetes_concepts/13.2_concepts.md @@ -95,7 +95,7 @@ Pod 通常不会被直接创建,而是通过 Deployment 等控制器来管理 容器组主要是为了数据共享和它们之间的通信。 -在一个容器组中,容器都使用相同的网络地址和端口,可以通过本地网络来相互通信。每个容器组都有独立的 IP,可用通过网络来和其他物理主机或者容器通信。 +在一个容器组中,容器都使用相同的网络地址和端口,可以通过本地网络来相互通信。每个容器组都有独立的 IP,可以通过网络来和其他物理主机或者容器通信。 容器组有一组存储卷 (挂载点),主要是为了让容器在重启之后可以不丢失数据。 diff --git a/13_kubernetes_concepts/13.3_design.md b/13_kubernetes_concepts/13.3_design.md index b6cc958..f1e855b 100644 --- a/13_kubernetes_concepts/13.3_design.md +++ b/13_kubernetes_concepts/13.3_design.md @@ -39,7 +39,7 @@ #### Etcd -这里 Etcd 即作为数据后端,又作为消息中间件。 +这里 Etcd 既作为数据后端,又作为消息中间件。 通过 Etcd 来存储所有的主节点上的状态信息,很容易实现主节点的分布式扩展。 diff --git a/14_kubernetes_setup/14.4_kind.md b/14_kubernetes_setup/14.4_kind.md index 71f882f..8f51b5e 100644 --- a/14_kubernetes_setup/14.4_kind.md +++ b/14_kubernetes_setup/14.4_kind.md @@ -15,7 +15,7 @@ Kind 相比其他本地集群方案 (如 Minikube) 有以下显著优势: ### 14.4.2 安装 Kind -Kind 是一个二进制文件,并在 PATH 中即可使用。以下是不同系统的安装方法。 +Kind 是一个二进制文件,放到 PATH 中即可使用。以下是不同系统的安装方法。 #### macOS diff --git a/15_etcd/15.4_etcdctl.md b/15_etcd/15.4_etcdctl.md index 5149939..09109ab 100644 --- a/15_etcd/15.4_etcdctl.md +++ b/15_etcd/15.4_etcdctl.md @@ -85,7 +85,7 @@ OPTIONS: ### 15.4.1 数据库操作 -数据库操作围绕对键值和目录的 CRUD (符合 REST 风格的一套操作:Create) 完整生命周期的管理。 +数据库操作围绕键值和目录的增删改查(CRUD),覆盖其完整生命周期管理。 etcd 在键的组织上采用了层次化的空间结构 (类似于文件系统中目录的概念),用户指定的键可以为单独的名字,如 `testkey`,此时实际上放在根目录 `/` 下面,也可以为指定目录结构,如 `cluster1/node2/testkey`,则将创建相应的目录结构。 diff --git a/16_cloud/16.3_alicloud.md b/16_cloud/16.3_alicloud.md index 8ea4d44..330a280 100644 --- a/16_cloud/16.3_alicloud.md +++ b/16_cloud/16.3_alicloud.md @@ -1,6 +1,6 @@ ## 16.3 阿里云 -如图 16-3:所示,阿里云是国内主流云服务平台之一。 +如图 16-3 所示,阿里云是国内主流云服务平台之一。 ![阿里云](./_images/aliyun-logo.png) diff --git a/16_cloud/16.4_aws.md b/16_cloud/16.4_aws.md index 1791f91..a80d374 100644 --- a/16_cloud/16.4_aws.md +++ b/16_cloud/16.4_aws.md @@ -1,6 +1,6 @@ ## 16.4 亚马逊云 -如图 16-5:所示,AWS 是全球主流云服务平台之一。 +如图 16-5 所示,AWS 是全球主流云服务平台之一。 ![AWS](./_images/aws-logo.jpg) diff --git a/17_ecosystem/17.8_wasm.md b/17_ecosystem/17.8_wasm.md index 96f3941..c03df77 100644 --- a/17_ecosystem/17.8_wasm.md +++ b/17_ecosystem/17.8_wasm.md @@ -31,7 +31,7 @@ ### 17.8.3 当 Docker 遇上 WebAssembly -在现代的容器生态系统中,Wasm 并不被看作是要被取代传统的 Docker 或者 Kubernetes 的技术,而是成为了一种 **与 Linux 容器互补并且共生** 的全新工作负载类型。 +在现代的容器生态系统中,Wasm 并不被看作是要取代传统 Docker 或者 Kubernetes 的技术,而是成为了一种 **与 Linux 容器互补并且共生** 的全新工作负载类型。 目前,这通过 OCI (Open Container Initiative) 和 CRI 标准实现了集成上的统一: diff --git a/20_cases_os/20.1_busybox.md b/20_cases_os/20.1_busybox.md index 815dcaf..29f96fe 100644 --- a/20_cases_os/20.1_busybox.md +++ b/20_cases_os/20.1_busybox.md @@ -112,4 +112,4 @@ tmpfs on /sys/firmware type tmpfs (ro,relatime) * `Busybox` 官网:https://busybox.net/ * `Busybox` 官方仓库:https://git.busybox.net/busybox/ * `Busybox` 官方镜像:https://hub.docker.com/\_/busybox/ -* `Busybox` 官方仓库:https://github.com/docker-library/busybox +* `Busybox` 官方镜像仓库:https://github.com/docker-library/busybox diff --git a/20_cases_os/20.2_alpine.md b/20_cases_os/20.2_alpine.md index de61329..ed4123c 100644 --- a/20_cases_os/20.2_alpine.md +++ b/20_cases_os/20.2_alpine.md @@ -7,14 +7,14 @@ ![Alpine Linux 操作系统](../_images/alpinelinux-logo.png) -`Alpine` 操作系统是一个面向安全的轻型 `Linux` 发行版。它不同于通常 `Linux` 发行版,`Alpine` 采用了 `musl libc` 和 `busybox` 以减小系统的体积和运行时资源消耗,但功能上比 `busybox` 又完善的多,因此得到开源社区越来越多的青睐。在保持瘦身的同时,`Alpine` 还提供了自己的包管理工具 `apk`,可以通过 [Alpine Packages](https://pkgs.alpinelinux.org/packages) 网站上查询包信息,也可以直接通过 `apk` 命令直接查询和安装各种软件。 +`Alpine` 操作系统是一个面向安全的轻型 `Linux` 发行版。它不同于通常 `Linux` 发行版,`Alpine` 采用了 `musl libc` 和 `busybox` 以减小系统的体积和运行时资源消耗,但功能上比 `busybox` 又完善得多,因此得到开源社区越来越多的青睐。在保持瘦身的同时,`Alpine` 还提供了自己的包管理工具 `apk`,可以在 [Alpine Packages](https://pkgs.alpinelinux.org/packages) 网站上查询包信息,也可以直接通过 `apk` 命令直接查询和安装各种软件。 -`Alpine` 由非商业组织维护的,支持广泛场景的 `Linux` 发行版,它特别为资深/重度 `Linux` 用户而优化,关注安全,性能和资源效能。`Alpine` 镜像可以适用于更多常用场景,并且是一个优秀的可以适用于生产的基础系统/环境。 +`Alpine` 是由非商业组织维护的、支持广泛场景的 `Linux` 发行版,它特别为资深/重度 `Linux` 用户而优化,关注安全,性能和资源效能。`Alpine` 镜像可以适用于更多常用场景,并且是一个优秀的可以适用于生产的基础系统/环境。 `Alpine` Docker 镜像也继承了 `Alpine Linux` 发行版的这些优势。相比于其他 `Docker` 镜像,它的容量非常小,压缩后仅约 **5 MB**(对比 `Ubuntu` 系列镜像约 `28 MB`),且拥有非常友好的包管理机制。官方镜像来自 `docker-alpine` 项目。 -目前 Docker 官方已开始推荐使用 `Alpine` 替代之前的 `Ubuntu` 做为基础镜像环境。这样会带来多个好处。包括镜像下载速度加快,镜像安全性提高,主机之间的切换更方便,占用更少磁盘空间等。 +目前 Docker 官方已开始推荐使用 `Alpine` 替代之前的 `Ubuntu` 作为基础镜像环境。这样会带来多个好处。包括镜像下载速度加快,镜像安全性提高,主机之间的切换更方便,占用更少磁盘空间等。 下表是官方镜像的大小比较(压缩后大小,实际数据以 Docker Hub 为准): @@ -51,7 +51,7 @@ $ docker run alpine echo '123' ```bash $ apk add --no-cache ``` -`Alpine` 中软件安装包的名字可能会与其他发行版有所不同,可以在 `https://pkgs.alpinelinux.org/packages` 网站搜索并确定安装包名称。如果需要的安装包不在主索引内,但是在测试或社区索引中。那么可以按照以下方法使用这些安装包。 +`Alpine` 中软件安装包的名字可能会与其他发行版有所不同,可以在 `https://pkgs.alpinelinux.org/packages` 网站搜索并确定安装包名称。如果需要的安装包不在主索引内,但是在测试或社区索引中,那么可以按照以下方法使用这些安装包。 ```bash $ echo "http://dl-cdn.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories diff --git a/20_cases_os/20.3_debian.md b/20_cases_os/20.3_debian.md index ef7c4b8..8b82251 100644 --- a/20_cases_os/20.3_debian.md +++ b/20_cases_os/20.3_debian.md @@ -9,7 +9,7 @@ ![Debian 操作系统](../_images/debian-logo.png) -`Debian` 是由 `GPL` 和其他自由软件许可协议授权的自由软件组成的操作系统,由 **Debian 计划 (Debian Project)** 组织维护。**Debian 计划** 是一个独立的、分散的组织,由 `3000` 人志愿者组成,接受世界多个非盈利组织的资金支持,`Software in the Public Interest` 提供支持并持有商标作为保护机构。`Debian` 以其坚守 `Unix` 和自由软件的精神,以及其给予用户的众多选择而闻名。现时 `Debian` 包括了超过 `25,000` 个软件包并支持 `12` 个计算机系统结构。 +`Debian` 是由 `GPL` 和其他自由软件许可协议授权的自由软件组成的操作系统,由 **Debian 计划 (Debian Project)** 组织维护。**Debian 计划** 是一个独立的、分散的组织,由 `3000` 名志愿者组成,接受世界多个非盈利组织的资金支持,`Software in the Public Interest` 提供支持并持有商标作为保护机构。`Debian` 以其坚守 `Unix` 和自由软件的精神,以及其给予用户的众多选择而闻名。现时 `Debian` 包括了超过 `25,000` 个软件包并支持 `12` 个计算机系统结构。 `Debian` 作为一个大的系统组织框架,其下有多种不同操作系统核心的分支计划,主要为采用 `Linux` 核心的 `Debian GNU/Linux` 系统,其他还有采用 `GNU Hurd` 核心的 `Debian GNU/Hurd` 系统、采用 `FreeBSD` 核心的 `Debian GNU/kFreeBSD` 系统,以及采用 `NetBSD` 核心的 `Debian GNU/NetBSD` 系统。甚至还有利用 `Debian` 的系统架构和工具,采用 `OpenSolaris` 核心构建而成的 `Nexenta OS` 系统。在这些 `Debian` 系统中,以采用 `Linux` 核心的 `Debian GNU/Linux` 最为著名。 diff --git a/20_cases_os/20.4_centos.md b/20_cases_os/20.4_centos.md index 7a036ca..5ef2f1a 100644 --- a/20_cases_os/20.4_centos.md +++ b/20_cases_os/20.4_centos.md @@ -36,7 +36,7 @@ CentOS Linux release 7.9.2009 (Core) ![Fedora 操作系统](../_images/fedora-logo.png) -`Fedora` 由 `Fedora Project` 社区开发,红帽公司赞助的 `Linux` 发行版。它的目标是创建一套新颖、多功能并且自由和开源的操作系统。`Fedora` 的功能对于用户而言,它是一套功能完备的,可以更新的免费操作系统,而对赞助商 `Red Hat` 而言,它是许多新技术的测试平台。被认为可用的技术最终会加入到 `Red Hat Enterprise Linux` 中。 +`Fedora` 是由 `Fedora Project` 社区开发、红帽公司赞助的 `Linux` 发行版。它的目标是创建一套新颖、多功能并且自由和开源的操作系统。`Fedora` 的功能对于用户而言,它是一套功能完备的,可以更新的免费操作系统,而对赞助商 `Red Hat` 而言,它是许多新技术的测试平台。被认为可用的技术最终会加入到 `Red Hat Enterprise Linux` 中。 #### 使用 Fedora 官方镜像 diff --git a/appendix/best_practices.md b/appendix/best_practices.md index 09d3952..eecff44 100644 --- a/appendix/best_practices.md +++ b/appendix/best_practices.md @@ -134,7 +134,7 @@ RUN apt-get install -y curl nginx ``` Docker 发现修改后的 `RUN apt-get update` 指令和之前的完全一样。所以,`apt-get update` 不会执行,而是使用之前的缓存镜像。因为 `apt-get update` 没有运行,后面的 `apt-get install` 可能安装的是过时的 `curl` 和 `nginx` 版本。 -使用 `RUN apt-get update && apt-get install -y` 可以确保你的 Dockerfiles 每次安装的都是包的最新的版本,而且这个过程不需要进一步的编码或额外干预。这项技术叫作 `cache busting`。你也可以显示指定一个包的版本号来达到 `cache-busting`,这就是所谓的固定版本,例如: +使用 `RUN apt-get update && apt-get install -y` 可以确保你的 Dockerfiles 每次安装的都是包的最新的版本,而且这个过程不需要进一步的编码或额外干预。这项技术叫作 `cache busting`。你也可以显式指定一个包的版本号来达到 `cache-busting`,这就是所谓的固定版本,例如: ```docker RUN apt-get update && apt-get install -y \ diff --git a/appendix/command/docker.md b/appendix/command/docker.md index d3608b3..320201a 100644 --- a/appendix/command/docker.md +++ b/appendix/command/docker.md @@ -19,7 +19,7 @@ * `attach`:依附到一个正在运行的容器中; * `build`:从一个 Dockerfile 创建一个镜像; * `commit`:从一个容器的修改中创建一个新的镜像; -* `cp`:在容器和本地宿主系统之间复制文件中; +* `cp`:在容器和本地宿主系统之间复制文件; * `create`:创建一个新容器,但并不运行它; * `diff`:检查一个容器内文件系统的修改,包括修改和增加; * `events`:从服务端获取实时的事件; @@ -64,7 +64,7 @@ ### 一张图总结 Docker 的命令 -如图 16-1 所示,Docker 常用客户端命令可按功能分组理解。 +如图 A-1 所示,Docker 常用客户端命令可按功能分组理解。 ![Docker 命令总结](../../_images/cmd_logic.jpg) diff --git a/appendix/faq/README.md b/appendix/faq/README.md index 511a111..6d29451 100644 --- a/appendix/faq/README.md +++ b/appendix/faq/README.md @@ -206,7 +206,7 @@ $ sudo ip netns show $ sudo ip netns exec 1234 ifconfig eth0 172.17.0.100/16 ``` -### 如何获取容器绑定到本地那个 veth 接口上? +### 如何获取容器绑定到本地哪个 veth 接口上? 答:Docker 容器启动后,会通过 veth 接口对连接到本地网桥,veth 接口命名跟容器命名毫无关系,十分难以找到对应关系。 diff --git a/appendix/learning_roadmap.md b/appendix/learning_roadmap.md index 1a23df8..43b3d04 100644 --- a/appendix/learning_roadmap.md +++ b/appendix/learning_roadmap.md @@ -135,7 +135,7 @@ Docker Compose 项目 2: Node.js 微服务 - 优化镜像大小 - 配置 Compose 多个服务 -- 设置网络和环保境变量 +- 设置网络和环境变量 项目 3: 数据库容器化 - PostgreSQL/MySQL 配置 diff --git a/appendix/repo/minio.md b/appendix/repo/minio.md index 4ccb4a5..d727ad3 100644 --- a/appendix/repo/minio.md +++ b/appendix/repo/minio.md @@ -16,7 +16,7 @@ $ docker run -d -p 9000:9000 -p 9090:9090 minio/minio server /data --console-add ### 离线部署 -许多生产环境是一般是没有公网资源的,这就需要从有公网资源的服务器上把镜像导出,然后导入到需要运行镜像的内网服务器。 +许多生产环境一般是没有公网资源的,这就需要从有公网资源的服务器上把镜像导出,然后导入到需要运行镜像的内网服务器。 #### 导出镜像