mirror of
https://github.com/yeasy/docker_practice.git
synced 2026-08-10 08:27:25 +00:00
fix(content): 修正已随上游变化失效的版本事实与镜像引用
深审发现 14 处正文与上游现状不符(另有 4 处在 .agent/ 本地记忆,不入库)。 全部经官方一手源核验,并由独立复核者逐条尝试证伪后保留。 **Docker Content Trust 已从 CLI 移除(本书基线正是 Engine 29.x)** - 18.6:`docker trust`、`DOCKER_CONTENT_TRUST` 的示例此前标为“历史用法”, 但未说明命令在 29.x 上根本不存在。Engine 29.0 release notes 原文: "Docker Content Trust was removed from the Docker CLI";实测 docker/cli 的 cli/trust 包在 v28.5.0 返回 200、v29.0.0 返回 404 - 2.3、18.6:DCT 不再是“弃用阶段、时间线待公布”——官方 retired 页已给出 完整时间表(notary.docker.io 2026-12-08 关闭) - 注意:`--disable-content-trust` 是 MarkDeprecated(隐藏但仍接受为 no-op), 不是“不可用”。初版提议写成不可用,经复核纠正后才落地 **etcd 维护分支写反了** - 15_etcd README/15.1/15.2 均称“3.5 已退出维护窗口”,但 2026-07-23 官方与 v3.7.1、v3.6.14 同批发布了 v3.5.33,公告称三个分支均在维护;3.4 EOL 也应 是 2026-06(v3.4.45),非 5 月 **其他上游变化** - 17.6:containerd 首个 2.x LTS 是 2.0(2024-11-05 起),非 2.3 - 6.4:`sonatype/nexus3:3.69` 这个 tag 从不存在(Sonatype 用三段式),改 3.69.0 - appendix/repo/centos:`rockylinux` 官方镜像已冻结(最后推送 2024-05-30), 改用官方指引的 `rockylinux/rockylinux`(2026-07-12 仍在更新) - 6.2/6.3:docs.docker.com/registry/ 已 301 到 retired 页,改指 distribution.github.io(实测 200) - 6.1:`docker search centos` 的示例输出补上上游现有的 DEPRECATED 标记 **刻意未改**:`minio/minio` 虽在 Docker Hub 标记 archived,但提议替换的 quay.io/minio/minio 最新 tag 停在 2024-07-31,比 Docker Hub 的 2025-09-07 更旧,照改会把读者引向更陈旧的仓库,留待作者定夺。 验证:check_project_rules 202 文件全过、emphasis 全过、40 测试通过、format 干净。
This commit is contained in:
@@ -255,7 +255,7 @@ someuser/myapp # ⚠️ 需要评估
|
|||||||
|
|
||||||
#### 镜像签名
|
#### 镜像签名
|
||||||
|
|
||||||
当前更推荐使用 Sigstore / Notation 体系进行镜像签名与验证。`Docker Content Trust (DCT)` 已进入弃用阶段:Docker 官方说明最早一批 DCT 签名证书自 2025 年 8 月 8 日起开始过期,并建议镜像发布者迁移到 Sigstore、Notation 等方案;完整弃用时间线仍以 Docker 后续公告为准。不建议把 DCT 作为新项目方案。
|
当前更推荐使用 Sigstore / Notation 体系进行镜像签名与验证。`Docker Content Trust (DCT)` 已被正式退役:自 Docker Engine 29.0 起 DCT 已从 Docker CLI 中移除(`docker trust` 子命令不再随 CLI 发布,仅能作为独立插件自行构建;`docker push`、`docker pull`、`docker build`、`docker run` 等命令上的 `--disable-content-trust` 选项虽仍可解析,但已标记为废弃且不再有实际作用),Docker 官方的 Notary v1 服务 `notary.docker.io` 也将于 2026 年 12 月 8 日完全关闭;最早一批 DCT 签名证书自 2025 年 8 月 8 日起已开始过期,Docker 建议镜像发布者迁移到 Sigstore、Notation 等方案。不建议把 DCT 作为新项目方案。
|
||||||
|
|
||||||
> 注意:Cosign 默认会把签名推送回镜像所在仓库,请使用你有推送权限的镜像地址。
|
> 注意:Cosign 默认会把签名推送回镜像所在仓库,请使用你有推送权限的镜像地址。
|
||||||
|
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ Docker Hub 是 Docker 的中央镜像仓库,通过它您可以轻松地分享
|
|||||||
```bash
|
```bash
|
||||||
$ docker search centos
|
$ docker search centos
|
||||||
NAME DESCRIPTION STARS OFFICIAL
|
NAME DESCRIPTION STARS OFFICIAL
|
||||||
centos The official build of CentOS. 7000+ [OK]
|
centos DEPRECATED; The official build of CentOS. 7000+ [OK]
|
||||||
```
|
```
|
||||||
> **技巧**:始终优先使用 `OFFICIAL` 标记为 `[OK]` 的镜像,安全性更有保障。
|
> **技巧**:始终优先使用 `OFFICIAL` 标记为 `[OK]` 的镜像,安全性更有保障。
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
本节介绍如何使用本地仓库。
|
本节介绍如何使用本地仓库。
|
||||||
|
|
||||||
[Docker Registry](https://docs.docker.com/registry/) 是官方提供的工具,可以用于构建私有的镜像仓库。本文示例沿用 [distribution/distribution](https://github.com/distribution/distribution) v2.x 兼容路径;新生产部署应评估 Distribution 3.x,并核对配置路径、迁移说明和生态兼容性。
|
[Docker Registry](https://distribution.github.io/distribution/) 是官方提供的工具,可以用于构建私有的镜像仓库。本文示例沿用 [distribution/distribution](https://github.com/distribution/distribution) v2.x 兼容路径;新生产部署应评估 Distribution 3.x,并核对配置路径、迁移说明和生态兼容性。
|
||||||
|
|
||||||
### 6.2.1 安装运行 docker-registry
|
### 6.2.1 安装运行 docker-registry
|
||||||
|
|
||||||
|
|||||||
@@ -215,4 +215,4 @@ no basic auth credentials
|
|||||||
|
|
||||||
### 6.3.8 注意事项
|
### 6.3.8 注意事项
|
||||||
|
|
||||||
如果你本机占用了 `443` 端口,你可以配置 [Nginx 代理](https://docs.docker.com/registry/recipes/nginx/),这里不再赘述。
|
如果你本机占用了 `443` 端口,你可以配置 [Nginx 代理](https://distribution.github.io/distribution/recipes/nginx/),这里不再赘述。
|
||||||
|
|||||||
@@ -8,10 +8,10 @@
|
|||||||
$ docker run -d --name nexus3 --restart=always \
|
$ docker run -d --name nexus3 --restart=always \
|
||||||
-p 8081:8081 \
|
-p 8081:8081 \
|
||||||
--mount src=nexus-data,target=/nexus-data \
|
--mount src=nexus-data,target=/nexus-data \
|
||||||
sonatype/nexus3:3.69
|
sonatype/nexus3:3.69.0
|
||||||
```
|
```
|
||||||
|
|
||||||
> **版本说明**:使用 `sonatype/nexus3:3.69` 指定稳定的 Nexus 版本。使用具体版本号而非 `latest` 可以避免意外升级带来的不兼容问题。
|
> **版本说明**:使用 `sonatype/nexus3:3.69.0` 指定稳定的 Nexus 版本。使用具体版本号而非 `latest` 可以避免意外升级带来的不兼容问题。
|
||||||
首次运行需等待 3-5 分钟,你可以使用 `docker logs nexus3 -f` 查看日志:
|
首次运行需等待 3-5 分钟,你可以使用 `docker logs nexus3 -f` 查看日志:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
## 15.1 简介
|
## 15.1 简介
|
||||||
|
|
||||||
> **版本说明:** 本章内容基于 etcd 3.5 系列版本编写。官方维护最新两个次版本(2026 年 7 月 etcd 3.7.0 发布后为 3.6 和 3.7,3.5 已退出维护窗口)。请访问 [etcd 官方发布页](https://github.com/etcd-io/etcd/releases) 获取最新版本信息。
|
> **版本说明:** 本章内容基于 etcd 3.5 系列版本编写。etcd 3.7.0 于 2026 年 7 月发布,官方仍在维护 3.5、3.6、3.7 三个发布分支。请访问 [etcd 官方发布页](https://github.com/etcd-io/etcd/releases) 获取最新版本信息。
|
||||||
|
|
||||||
如图 15-1 所示,etcd 项目使用该标识。
|
如图 15-1 所示,etcd 项目使用该标识。
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
`etcd` 基于 `Go` 语言实现,因此,用户可以从[项目主页](https://github.com/etcd-io/etcd)下载源代码自行编译,也可以下载编译好的二进制文件,甚至直接使用制作好的 `Docker` 镜像文件来体验。
|
`etcd` 基于 `Go` 语言实现,因此,用户可以从[项目主页](https://github.com/etcd-io/etcd)下载源代码自行编译,也可以下载编译好的二进制文件,甚至直接使用制作好的 `Docker` 镜像文件来体验。
|
||||||
|
|
||||||
> 注意:etcd 官方仅维护最新两个次版本(2026 年 7 月 etcd 3.7.0 发布后为 3.6 和 3.7)。etcd 3.4 已于 2026 年 5 月结束支持(EOL),3.5 也已退出维护窗口,仍在使用的用户应尽快升级。本章示例基于 etcd `3.5.x` 版本编写,etcd 3.6.x/3.7.x 可用于新部署。请访问 [etcd 官方发布页](https://github.com/etcd-io/etcd/releases) 获取最新版本。
|
> 注意:etcd 3.7.0 于 2026 年 7 月发布,官方仍在维护 3.5、3.6、3.7 三个发布分支。etcd 3.4 已随 2026 年 6 月的 v3.4.45 结束支持(EOL),仍在使用的用户应尽快升级。本章示例基于 etcd `3.5.x` 版本编写,etcd 3.6.x/3.7.x 可用于新部署。请访问 [etcd 官方发布页](https://github.com/etcd-io/etcd/releases) 获取最新版本。
|
||||||
|
|
||||||
### 15.2.1 二进制文件方式下载
|
### 15.2.1 二进制文件方式下载
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
`etcd` 是 `CoreOS` 团队发起的一个管理配置信息和服务发现 (`Service Discovery`) 的项目,在这一章里面,我们将基于 `etcd 3.5 系列`版本介绍该项目的目标,安装和使用,以及实现的技术。
|
`etcd` 是 `CoreOS` 团队发起的一个管理配置信息和服务发现 (`Service Discovery`) 的项目,在这一章里面,我们将基于 `etcd 3.5 系列`版本介绍该项目的目标,安装和使用,以及实现的技术。
|
||||||
|
|
||||||
> **版本说明:** 本章示例基于 etcd 3.5 系列版本编写。etcd 官方维护最新两个次版本(2026 年 7 月 etcd 3.7.0 发布后为 3.6 和 3.7,3.5 已退出维护窗口)。请访问 [etcd 官方发布页](https://github.com/etcd-io/etcd/releases) 获取最新版本信息。
|
> **版本说明:** 本章示例基于 etcd 3.5 系列版本编写。etcd 3.7.0 于 2026 年 7 月发布,官方仍在维护 3.5、3.6、3.7 三个发布分支。请访问 [etcd 官方发布页](https://github.com/etcd-io/etcd/releases) 获取最新版本信息。
|
||||||
|
|
||||||
## 本章内容
|
## 本章内容
|
||||||
|
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ Kubernetes 作为一个容器编排系统,为了屏蔽底层不同容器运行
|
|||||||
|
|
||||||
- 早期版本中,Kubernetes 默认使用 docker 作为运行时,通过一个名为 `dockershim` 的桥接组件对接 Docker,Docker 再对接 containerd。
|
- 早期版本中,Kubernetes 默认使用 docker 作为运行时,通过一个名为 `dockershim` 的桥接组件对接 Docker,Docker 再对接 containerd。
|
||||||
- 随着 containerd 原生支持了 CRI 插件,Kubernetes 开始直接与 containerd 通信,去掉了 `dockershim` 和 `dockerd` 的中间层。这就是为什么从 Kubernetes 1.24+ 开始“弃用 Docker”引发了广泛关注,实际上 Kubernetes 只是弃用 `dockershim`,底层可以使用 containerd、CRI-O 等符合 CRI 的运行时。参见 [Kubernetes 官方文档](https://kubernetes.io/docs/setup/production-environment/container-runtimes/)。
|
- 随着 containerd 原生支持了 CRI 插件,Kubernetes 开始直接与 containerd 通信,去掉了 `dockershim` 和 `dockerd` 的中间层。这就是为什么从 Kubernetes 1.24+ 开始“弃用 Docker”引发了广泛关注,实际上 Kubernetes 只是弃用 `dockershim`,底层可以使用 containerd、CRI-O 等符合 CRI 的运行时。参见 [Kubernetes 官方文档](https://kubernetes.io/docs/setup/production-environment/container-runtimes/)。
|
||||||
- containerd 2.0+ 移除了已弃用的 CRI v1alpha2 接口,仅保留 CRI v1(Kubernetes 1.26+ 仅支持 CRI v1)。如果集群中仍有依赖 CRI v1alpha2 的组件,升级 containerd 2.x 前需先完成迁移。containerd 2.3+ 是 2.x 系列首个 LTS 版本,支持从 1.7 LTS 直接升级,生产环境推荐使用。详见 [containerd 发布说明](https://github.com/containerd/containerd/releases)。
|
- containerd 2.0+ 移除了已弃用的 CRI v1alpha2 接口,仅保留 CRI v1(Kubernetes 1.26+ 仅支持 CRI v1)。如果集群中仍有依赖 CRI v1alpha2 的组件,升级 containerd 2.x 前需先完成迁移。containerd 2.x 系列中 2.0 和 2.3 均为 LTS 版本,其中 2.3 支持从 1.7 LTS 直接升级,生产环境推荐使用。详见 [containerd 发布说明](https://github.com/containerd/containerd/releases)。
|
||||||
|
|
||||||
### 17.6.3 为什么直接使用 containerd?
|
### 17.6.3 为什么直接使用 containerd?
|
||||||
|
|
||||||
|
|||||||
@@ -291,11 +291,11 @@ notation verify myregistry.com/myapp@sha256:<digest>
|
|||||||
|
|
||||||
> **注意:DCT 退役时间线**
|
> **注意:DCT 退役时间线**
|
||||||
>
|
>
|
||||||
> Docker 已宣布[退役 Content Trust](https://www.docker.com/blog/retiring-docker-content-trust/),Docker Official Images 的部分 DCT 签名证书自 2025 年 8 月起已陆续过期;完整退役节奏应以 Docker 官方公告和你所使用的 registry 服务商文档为准。不要把云厂商特定日期直接当作 Docker 全局时间线。
|
> Docker 已宣布[退役 Content Trust](https://www.docker.com/blog/retiring-docker-content-trust/),Docker Official Images 的部分 DCT 签名证书自 2025 年 8 月起已陆续过期;根据 [Docker 官方退役说明](https://docs.docker.com/retired/),Notary v1 服务 `notary.docker.io` 在 2026 年 7 月、8 月安排若干次 brownout(短时停服演练)之后,于 2026 年 12 月 8 日完全关闭。registry 服务商的具体节奏以其自身文档为准,不要把云厂商特定日期直接当作 Docker 全局时间线。
|
||||||
>
|
>
|
||||||
> 新项目应优先使用上文介绍的 **Cosign (Sigstore)** 或 registry 原生签名/证明能力;现有 DCT 用户应先盘点依赖、验证替代方案,再制定迁移计划。
|
> 新项目应优先使用上文介绍的 **Cosign (Sigstore)** 或 registry 原生签名/证明能力;现有 DCT 用户应先盘点依赖、验证替代方案,再制定迁移计划。
|
||||||
|
|
||||||
Docker Content Trust 使用 Notary v1 实现镜像签名,是 Docker 官方的传统签名解决方案,不建议新项目采用。
|
Docker Content Trust 使用 Notary v1 实现镜像签名,是 Docker 官方的传统签名解决方案,不建议新项目采用。**自 Docker Engine 29.0 起,Docker Content Trust 已从 Docker CLI 中移除**:`docker trust` 子命令不再内置(官方仅保留为可单独构建的插件),`DOCKER_CONTENT_TRUST` 环境变量不再生效,`docker push --disable-content-trust` 也仅作为已废弃选项保留、不再有实际作用。下面的示例仅适用于 Docker Engine 28.x 及更早版本。
|
||||||
|
|
||||||
**历史用法示例(不建议新项目采用):**
|
**历史用法示例(不建议新项目采用):**
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
> ⚠️ **重要提示**:CentOS 8 已于 2021 年 12 月 31 日停止维护 (EOL),CentOS 7 也已于 2024 年 6 月 30 日 **完全结束支持**。Docker Hub 上的 CentOS 官方镜像 **已停止更新** 且存在未修复的安全漏洞。
|
> ⚠️ **重要提示**:CentOS 8 已于 2021 年 12 月 31 日停止维护 (EOL),CentOS 7 也已于 2024 年 6 月 30 日 **完全结束支持**。Docker Hub 上的 CentOS 官方镜像 **已停止更新** 且存在未修复的安全漏洞。
|
||||||
>
|
>
|
||||||
> 2026 年了,对于任何新项目,**强烈建议** 使用以下生产级替代方案:
|
> 2026 年了,对于任何新项目,**强烈建议** 使用以下生产级替代方案:
|
||||||
> - [Rocky Linux](https://hub.docker.com/_/rockylinux):CentOS 原创始人发起的社区驱动项目,目前主流为 Rocky Linux 9。
|
> - [Rocky Linux](https://hub.docker.com/r/rockylinux/rockylinux):CentOS 原创始人发起的社区驱动项目,目前主流为 Rocky Linux 9。
|
||||||
> - [AlmaLinux](https://hub.docker.com/_/almalinux):由 CloudLinux 支持的企业级发行版,提供长期支持。
|
> - [AlmaLinux](https://hub.docker.com/_/almalinux):由 CloudLinux 支持的企业级发行版,提供长期支持。
|
||||||
> - [CentOS Stream](https://quay.io/repository/centos/centos):RHEL 的上游开发分支,镜像已迁移至 Quay.io (适合开发测试,不建议用于生产环境)。
|
> - [CentOS Stream](https://quay.io/repository/centos/centos):RHEL 的上游开发分支,镜像已迁移至 Quay.io (适合开发测试,不建议用于生产环境)。
|
||||||
|
|
||||||
@@ -18,7 +18,7 @@
|
|||||||
使用 Rocky Linux 9 替代 (**推荐**):
|
使用 Rocky Linux 9 替代 (**推荐**):
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ docker run --name rocky -it rockylinux:9 bash
|
$ docker run --name rocky -it rockylinux/rockylinux:9 bash
|
||||||
```
|
```
|
||||||
使用旧版 CentOS 7 (**仅用于维护旧项目,不推荐**):
|
使用旧版 CentOS 7 (**仅用于维护旧项目,不推荐**):
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user