From 3c5c5911b096a2d8f284ef57c17e45263b53333e Mon Sep 17 00:00:00 2001 From: yeasy Date: Wed, 13 May 2026 08:22:20 +0000 Subject: [PATCH] Fix nginx version, IPVS removal, cgroups v2 and Redis config --- 02_basic_concept/2.1_image.md | 2 +- 02_basic_concept/2.3_repository.md | 18 +++++++++--------- 04_image/4.1_pull.md | 2 +- 04_image/4.4_commit.md | 4 ++-- 04_image/4.5_build.md | 2 +- 05_container/README.md | 2 +- 07_dockerfile/7.12_healthcheck.md | 2 +- 07_dockerfile/7.17_multistage_builds.md | 2 +- .../7.18_multistage_builds_laravel.md | 8 ++++---- 12_implementation/12.3_cgroups.md | 2 +- 13_kubernetes_concepts/13.2_concepts.md | 2 +- 13_kubernetes_concepts/13.5_practice.md | 4 ++-- 14_kubernetes_setup/14.1_kubeadm.md | 2 +- 14_kubernetes_setup/14.2_kubeadm-docker.md | 2 +- 21_case_devops/21.7_practical_examples.md | 2 +- 15 files changed, 28 insertions(+), 28 deletions(-) diff --git a/02_basic_concept/2.1_image.md b/02_basic_concept/2.1_image.md index 215b420..8006393 100644 --- a/02_basic_concept/2.1_image.md +++ b/02_basic_concept/2.1_image.md @@ -172,7 +172,7 @@ registry.example.com/myproject/myapp:v1.2.3 ## 简写(使用 Docker Hub) -nginx:1.30 +nginx:1.28 ubuntu:24.04 ## 省略标签(默认使用 latest) diff --git a/02_basic_concept/2.3_repository.md b/02_basic_concept/2.3_repository.md index de8cae2..fb62a22 100644 --- a/02_basic_concept/2.3_repository.md +++ b/02_basic_concept/2.3_repository.md @@ -1,6 +1,6 @@ ## 2.3 仓库 -> **版本说明**:本节示例基于 Docker v29.x 和常见镜像版本编写。示例中的版本号(如 `nginx:1.30`、`mysql:8.4`、`mysql:5.7` 等)为演示用途。实际使用时请访问 [Docker Hub 官方页面](https://hub.docker.com) 或相应镜像的发布页确认最新可用版本和标签。 +> **版本说明**:本节示例基于 Docker v29.x 和常见镜像版本编写。示例中的版本号(如 `nginx:1.28`、`mysql:8.4`、`mysql:5.7` 等)为演示用途。实际使用时请访问 [Docker Hub 官方页面](https://hub.docker.com) 或相应镜像的发布页确认最新可用版本和标签。 Docker Registry 是镜像分发和管理的核心组件。本节将介绍 Registry 的基本概念、公共和私有服务的选择,以及镜像的安全管理。 @@ -25,8 +25,8 @@ flowchart TB subgraph RepoNginx ["Repository(仓库): nginx"] direction LR N1(":latest (tag)") - N2(":1.25 (tag)") - N3(":1.24 (tag)") + N2(":1.28 (tag)") + N3(":1.26 (tag)") N4(":alpine (tag)") N5("...") N1 ~~~ N2 ~~~ N3 ~~~ N4 ~~~ N5 @@ -50,7 +50,7 @@ flowchart TB |------|------|------| | **Registry** | 存储镜像的服务 | Docker Hub、ghcr.io | | **Repository (仓库)** | 同一软件的镜像集合 | `nginx`、`mysql`、`mycompany/myapp` | -| **Tag (标签)** | 仓库内的版本标识 | `latest`、`1.25`、`alpine` | +| **Tag (标签)** | 仓库内的版本标识 | `latest`、`1.28`、`alpine` | #### 镜像的完整名称 @@ -73,7 +73,7 @@ registry.example.com/mycompany/myapp:v1.2.3 ## Docker Hub 官方镜像(省略 registry 和用户名) -nginx:1.30 +nginx:1.28 ubuntu:24.04 ## Docker Hub 用户镜像 @@ -217,7 +217,7 @@ $ docker login registry.example.com # 登录其他 Registry ## 拉取镜像 -$ docker pull nginx:1.30 +$ docker pull nginx:1.28 ## 标记镜像(准备推送) @@ -261,9 +261,9 @@ someuser/myapp # ⚠️ 需要评估 ```bash ## 准备一个你有写权限的镜像地址 -$ export IMAGE=<你的仓库名>/nginx:1.30 -$ docker pull nginx:1.30 -$ docker tag nginx:1.30 $IMAGE +$ export IMAGE=<你的仓库名>/nginx:1.28 +$ docker pull nginx:1.28 +$ docker tag nginx:1.28 $IMAGE $ docker push $IMAGE ## 生成签名密钥(会生成 cosign.key / cosign.pub) diff --git a/04_image/4.1_pull.md b/04_image/4.1_pull.md index 65a9b79..68c82aa 100644 --- a/04_image/4.1_pull.md +++ b/04_image/4.1_pull.md @@ -4,7 +4,7 @@ > **版本号最佳实践** > -> - **永远指定版本号**:避免使用 `latest` 标签,应指定具体的版本(如 `ubuntu:24.04`、`nginx:1.30`),以确保镜像内容稳定一致。 +> - **永远指定版本号**:避免使用 `latest` 标签,应指定具体的版本(如 `ubuntu:24.04`、`nginx:1.28`),以确保镜像内容稳定一致。 > - **在生产环境使用摘要**:优先使用镜像摘要(SHA256)而非标签,如 `nginx@sha256:abc123...`,因为摘要不可变。 > - **定期评估依赖**:即使指定了版本号,仍应定期检查依赖的基础镜像是否有安全更新。 diff --git a/04_image/4.4_commit.md b/04_image/4.4_commit.md index d2df330..47611ee 100644 --- a/04_image/4.4_commit.md +++ b/04_image/4.4_commit.md @@ -10,7 +10,7 @@ 现在让我们以定制一个 Web 服务器为例子,来讲解镜像是如何构建的。 -> **版本提示**:以下示例中 `nginx` 镜像使用默认 `latest` 标签。生产环境建议指定具体版本号(如 `nginx:1.30`),以避免镜像更新带来的不兼容性。 +> **版本提示**:以下示例中 `nginx` 镜像使用默认 `latest` 标签。生产环境建议指定具体版本号(如 `nginx:1.28`),以避免镜像更新带来的不兼容性。 ```bash $ docker run --name webserver -d -p 8080:80 nginx @@ -93,7 +93,7 @@ nginx 1.30 05a60462f8ba 12 days ago nginx latest e43d811ce2f4 4 weeks ago 181.5 MB ``` -> **版本说明**:上面示例中 `nginx:1.30` 代表 1.30 系列的最新 patch 版本。在���际应用中应根据需求选择确切的版本号,而不是盲目使用 `latest`。 +> **版本说明**:上面示例中 `nginx:1.28` 代表 1.30 系列的最新 patch 版本。在���际应用中应根据需求选择确切的版本号,而不是盲目使用 `latest`。 我们还可以用 `docker history` 具体查看镜像内的历史记录。例如先执行 `docker history nginx:v2`,再对比 `docker history nginx:latest`,就能看到我们刚刚提交出来的新层。 diff --git a/04_image/4.5_build.md b/04_image/4.5_build.md index 6ec71db..0161c9c 100644 --- a/04_image/4.5_build.md +++ b/04_image/4.5_build.md @@ -26,7 +26,7 @@ $ touch Dockerfile ``` 其内容为: -> **版本提示**:下面示例中 `FROM nginx` 使用的是 `latest` 标签。在实际应用中应使用明确的版本号(如 `FROM nginx:1.30`),以确保 Dockerfile 的可重现性和稳定性。 +> **版本提示**:下面示例中 `FROM nginx` 使用的是 `latest` 标签。在实际应用中应使用明确的版本号(如 `FROM nginx:1.28`),以确保 Dockerfile 的可重现性和稳定性。 ```docker FROM nginx diff --git a/05_container/README.md b/05_container/README.md index 84c6011..4b9360a 100644 --- a/05_container/README.md +++ b/05_container/README.md @@ -14,7 +14,7 @@ - **镜像标签约定**: - `latest` 或 `v1.0.0` 等:带标签的自定义镜像,示例中指定具体版本 - `24.04`、`8.4`:官方镜像的稳定版本分支 - - 生产环境建议:指定���确版本号(如 `nginx:1.30.0`、`mysql:8.4.4`)而非仅大版本号 + - 生产环境建议:指定���确版本号(如 `nginx:1.28.0`、`mysql:8.4.4`)而非仅大版本号 * [启动容器](5.1_run.md) * [守护态运行](5.2_daemon.md) diff --git a/07_dockerfile/7.12_healthcheck.md b/07_dockerfile/7.12_healthcheck.md index 7d2a9d7..1b3e17b 100644 --- a/07_dockerfile/7.12_healthcheck.md +++ b/07_dockerfile/7.12_healthcheck.md @@ -34,7 +34,7 @@ Starting ──成功──> Healthy ──失败N次──> Unhealthy #### Web 服务检查 ```docker -# 注:nginx 镜像推荐使用具体的版本标签(如 nginx:1.30-alpine) +# 注:nginx 镜像推荐使用具体的版本标签(如 nginx:1.28-alpine) FROM nginx RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/* diff --git a/07_dockerfile/7.17_multistage_builds.md b/07_dockerfile/7.17_multistage_builds.md index fbd0c8e..34924c7 100644 --- a/07_dockerfile/7.17_multistage_builds.md +++ b/07_dockerfile/7.17_multistage_builds.md @@ -176,5 +176,5 @@ $ docker build --target builder -t username/imagename:tag . 上面例子中我们使用 `COPY --from=0 /go/src/github.com/go/helloworld/app .` 从上一阶段的镜像中复制文件,我们也可以复制任意镜像中的文件。 ```docker -COPY --from=nginx:1.30-alpine /etc/nginx/nginx.conf /nginx.conf +COPY --from=nginx:1.28-alpine /etc/nginx/nginx.conf /nginx.conf ``` diff --git a/07_dockerfile/7.18_multistage_builds_laravel.md b/07_dockerfile/7.18_multistage_builds_laravel.md index 0fa4897..e097b9e 100644 --- a/07_dockerfile/7.18_multistage_builds_laravel.md +++ b/07_dockerfile/7.18_multistage_builds_laravel.md @@ -128,8 +128,8 @@ RUN set -x ; cd ${LARAVEL_PATH} \ ### 7.18.5 最后一个阶段构建 NGINX 镜像 ```docker -# 注:nginx 镜像推荐使用具体的版本标签(如 nginx:1.30-alpine) -FROM nginx:1.30-alpine as nginx +# 注:nginx 镜像推荐使用具体的版本标签(如 nginx:1.28-alpine) +FROM nginx:1.28-alpine as nginx ARG LARAVEL_PATH=/app/laravel @@ -179,7 +179,7 @@ $ docker run -dit --rm --network=laravel -p 8080:80 my/nginx 完整的 `Dockerfile` 文件如下。 ```docker -# 注:生产环境推荐使用具体的版本标签,如 node:22-alpine、composer:2.x、php:8.3-fpm-alpine、nginx:1.30-alpine +# 注:生产环境推荐使用具体的版本标签,如 node:22-alpine、composer:2.x、php:8.3-fpm-alpine、nginx:1.28-alpine FROM node:22-alpine as frontend COPY package.json /app/ @@ -229,7 +229,7 @@ RUN set -x ; cd ${LARAVEL_PATH} \ && chmod -R 777 storage \ && php artisan package:discover -FROM nginx:1.30-alpine as nginx +FROM nginx:1.28-alpine as nginx ARG LARAVEL_PATH=/app/laravel diff --git a/12_implementation/12.3_cgroups.md b/12_implementation/12.3_cgroups.md index 8ebfdcd..a6c5d9d 100644 --- a/12_implementation/12.3_cgroups.md +++ b/12_implementation/12.3_cgroups.md @@ -198,7 +198,7 @@ $ docker run --rm --cpus=1 stress --cpu 4 #### Docker 对 cgroups v2 的支持 -Docker 19.03+ 默认优先使用 cgroups v2(如果系统支持),提供更好的性能和资源隔离。如果需要明确控制或回退到 v1,可以通过 Docker 守护进程配置文件 `/etc/docker/daemon.json` 修改 `cgroup-driver` 参数: +Docker 20.10+ 开始支持 cgroups v2(如果系统支持),提供更好的性能和资源隔离。如果需要明确控制或回退到 v1,可以通过 Docker 守护进程配置文件 `/etc/docker/daemon.json` 修改 `cgroup-driver` 参数: ```json { diff --git a/13_kubernetes_concepts/13.2_concepts.md b/13_kubernetes_concepts/13.2_concepts.md index a5218cb..a89e65a 100644 --- a/13_kubernetes_concepts/13.2_concepts.md +++ b/13_kubernetes_concepts/13.2_concepts.md @@ -166,7 +166,7 @@ spec: spec: containers: - name: nginx - image: nginx:1.30 + image: nginx:1.28 ports: - containerPort: 80 ``` diff --git a/13_kubernetes_concepts/13.5_practice.md b/13_kubernetes_concepts/13.5_practice.md index 2e1c4a0..d3e31b5 100644 --- a/13_kubernetes_concepts/13.5_practice.md +++ b/13_kubernetes_concepts/13.5_practice.md @@ -31,7 +31,7 @@ spec: spec: containers: - name: nginx - image: nginx:1.30 + image: nginx:1.28 ports: - containerPort: 80 ``` @@ -73,7 +73,7 @@ kubectl get svc nginx-service ### 13.5.4 步骤 3:模拟滚动更新 -修改 `nginx-deployment.yaml`,将镜像版本改为 `nginx:1.30-alpine`。 +修改 `nginx-deployment.yaml`,将镜像版本改为 `nginx:1.28-alpine`。 ```bash kubectl apply -f nginx-deployment.yaml diff --git a/14_kubernetes_setup/14.1_kubeadm.md b/14_kubernetes_setup/14.1_kubeadm.md index 4bf3168..1397838 100644 --- a/14_kubernetes_setup/14.1_kubeadm.md +++ b/14_kubernetes_setup/14.1_kubeadm.md @@ -140,7 +140,7 @@ $ sysctl --system #### 修改 `kubelet.service`(可选:IPVS 模式) -> **注意**:kube-proxy 的 IPVS 模式已在 Kubernetes 1.35 中被标记为弃用,并计划在后续版本中移除。新部署建议使用默认的 iptables 模式或 nftables 模式(Kubernetes 1.31+ 可用)。以下 IPVS 配置仅供需要兼容旧环境的场景参考。 +> **注意**:kube-proxy 的 IPVS 模式已在 Kubernetes 1.35 中被标记为弃用,并在 **Kubernetes 1.36 中正式移除**。新部署应使用默认的 iptables 模式或 nftables 模式(Kubernetes 1.31+ 可用)。以下 IPVS 配置仅供 1.35 及更早版本的旧环境参考。 `/etc/systemd/system/kubelet.service.d/10-proxy-ipvs.conf` 写入以下内容 diff --git a/14_kubernetes_setup/14.2_kubeadm-docker.md b/14_kubernetes_setup/14.2_kubeadm-docker.md index 745a2fa..ab145b6 100644 --- a/14_kubernetes_setup/14.2_kubeadm-docker.md +++ b/14_kubernetes_setup/14.2_kubeadm-docker.md @@ -171,7 +171,7 @@ $ sysctl --system #### 修改 `kubelet.service`(可选:IPVS 模式) -> **注意**:kube-proxy 的 IPVS 模式已在 Kubernetes 1.35 中被标记为弃用,并计划在后续版本中移除。新部署建议使用默认的 iptables 模式或 nftables 模式(Kubernetes 1.31+ 可用)。以下 IPVS 配置仅供需要兼容旧环境的场景参考。 +> **注意**:kube-proxy 的 IPVS 模式已在 Kubernetes 1.35 中被标记为弃用,并在 **Kubernetes 1.36 中正式移除**。新部署应使用默认的 iptables 模式或 nftables 模式(Kubernetes 1.31+ 可用)。以下 IPVS 配置仅供 1.35 及更早版本的旧环境参考。 `/etc/systemd/system/kubelet.service.d/10-proxy-ipvs.conf` 写入以下内容 diff --git a/21_case_devops/21.7_practical_examples.md b/21_case_devops/21.7_practical_examples.md index 3629c60..530c6dc 100644 --- a/21_case_devops/21.7_practical_examples.md +++ b/21_case_devops/21.7_practical_examples.md @@ -543,7 +543,7 @@ logfile "" # 客户端输出缓冲限制 client-output-buffer-limit normal 0 0 0 -client-output-buffer-limit slave 256mb 64mb 60 +client-output-buffer-limit replica 256mb 64mb 60 client-output-buffer-limit pubsub 32mb 8mb 60 ```