Add section numbers to ecosystem headings

This commit is contained in:
yeasy
2026-04-22 12:24:30 -07:00
parent adbb6f4406
commit 985a9fa8b3
5 changed files with 22 additions and 22 deletions
+4 -4
View File
@@ -2,20 +2,20 @@
本节介绍 Buildah包括其基础概念应用场景以及基本指令 本节介绍 Buildah包括其基础概念应用场景以及基本指令
### Buildah 简介 ### 17.4.1 Buildah 简介
Buildah 是一个用于构建 OCIOpen Container Initiative兼容格式容器镜像的开源命令行工具 Docker 需要一直运行的守护进程daemon不同Buildah 的设计初衷是无需守护进程daemonless即可工作并且也不强制要求 root 权限rootless这使得在持续集成/持续部署CI/CD环境中构建镜像时能够更加轻量且安全 Buildah 是一个用于构建 OCIOpen Container Initiative兼容格式容器镜像的开源命令行工具 Docker 需要一直运行的守护进程daemon不同Buildah 的设计初衷是无需守护进程daemonless即可工作并且也不强制要求 root 权限rootless这使得在持续集成/持续部署CI/CD环境中构建镜像时能够更加轻量且安全
Buildah Red Hat 主导开发通常和 PodmanSkopeo 一起使用被认为是构建运行和管理容器的一套现代化工具链在很多需要增强安全性和无需依赖守护进程的场景中Buildah `docker build` 命令的最佳替代方案 Buildah Red Hat 主导开发通常和 PodmanSkopeo 一起使用被认为是构建运行和管理容器的一套现代化工具链在很多需要增强安全性和无需依赖守护进程的场景中Buildah `docker build` 命令的最佳替代方案
### 核心特性 ### 17.4.2 核心特性
- **无守护进程Daemonless**Buildah 直接通过系统调用拉取构建和推送镜像减少了单点故障的风险和资源开销 - **无守护进程Daemonless**Buildah 直接通过系统调用拉取构建和推送镜像减少了单点故障的风险和资源开销
- **构建效率高**可以挂载镜像的根文件系统到本地并直接利用宿主机的工具对其进行操作非常灵活 - **构建效率高**可以挂载镜像的根文件系统到本地并直接利用宿主机的工具对其进行操作非常灵活
- **兼容性**不仅支持处理传统的 Dockerfile还能完全兼容 OCIOpen Container Initiative标准和 Docker 格式 - **兼容性**不仅支持处理传统的 Dockerfile还能完全兼容 OCIOpen Container Initiative标准和 Docker 格式
- ** Podman 集成**Podman 自身构建镜像的命令 `podman build` 底层实际上也是依赖 Buildah 库来实现的 - ** Podman 集成**Podman 自身构建镜像的命令 `podman build` 底层实际上也是依赖 Buildah 库来实现的
### 安装 Buildah ### 17.4.3 安装 Buildah
在许多主流的 Linux 发行版中都可以通过包管理器直接安装 Buildah 在许多主流的 Linux 发行版中都可以通过包管理器直接安装 Buildah
@@ -31,7 +31,7 @@ $ sudo apt-get update
$ sudo apt-get -y install buildah $ sudo apt-get -y install buildah
``` ```
### 基础用法示例 ### 17.4.4 基础用法示例
#### 1. 从现有的 Dockerfile 构建镜像 #### 1. 从现有的 Dockerfile 构建镜像
+5 -5
View File
@@ -2,20 +2,20 @@
本节介绍 Skopeo包括其基础概念应用场景以及基本指令 本节介绍 Skopeo包括其基础概念应用场景以及基本指令
### Skopeo 简介 ### 17.5.1 Skopeo 简介
Skopeo 是一个由 Red Hat 赞助开源的命令行工具它可以在不需要运行容器守护进程 Docker Daemon的前提下对容器镜像进行极其高效的操作和管理包括检查复制删除和签名等操作 Skopeo 是一个由 Red Hat 赞助开源的命令行工具它可以在不需要运行容器守护进程 Docker Daemon的前提下对容器镜像进行极其高效的操作和管理包括检查复制删除和签名等操作
Skopeo 最大的特点是其可以在不将镜像拉取到本地的情况下直接在远端 Registry镜像仓库之间完成检查和搬运从而大幅度节省带宽和磁盘空间这也是它在容器运维和分发领域非常受欢迎的原因 Skopeo 最大的特点是其可以在不将镜像拉取到本地的情况下直接在远端 Registry镜像仓库之间完成检查和搬运从而大幅度节省带宽和磁盘空间这也是它在容器运维和分发领域非常受欢迎的原因
### 核心特性 ### 17.5.2 核心特性
- **远程巡检**通过 `skopeo inspect` 可以查看远端仓库中镜像的元数据例如包含哪些层环境变量信息入口命令等而完全无需拉取该镜像 - **远程巡检**通过 `skopeo inspect` 可以查看远端仓库中镜像的元数据例如包含哪些层环境变量信息入口命令等而完全无需拉取该镜像
- **镜像复制与同步**支持各种格式之间的相互传输如在不同的容器仓库之间或者从仓库拉取到本地的目录或者存储为 OCI 布局结构等 - **镜像复制与同步**支持各种格式之间的相互传输如在不同的容器仓库之间或者从仓库拉取到本地的目录或者存储为 OCI 布局结构等
- **镜像删除**可以远程删除仓库中的镜像需要拥有权限 - **镜像删除**可以远程删除仓库中的镜像需要拥有权限
- **签名验证**支持在分发镜像前进行数字签名以保障安全性 - **签名验证**支持在分发镜像前进行数字签名以保障安全性
### 安装 Skopeo ### 17.5.3 安装 Skopeo
类似于 BuildahSkopeo 也直接包含在大部分主流的 Linux 源中 类似于 BuildahSkopeo 也直接包含在大部分主流的 Linux 源中
@@ -36,7 +36,7 @@ $ sudo apt-get -y install skopeo
$ brew install skopeo $ brew install skopeo
``` ```
### 基础用法示例 ### 17.5.4 基础用法示例
#### 1. 远程检查镜像 #### 1. 远程检查镜像
+4 -4
View File
@@ -2,7 +2,7 @@
本节介绍 containerd它是现代容器技术栈中最为核心的基础组件之一了解 containerd 有助于更深入地理解 Docker Kubernetes 的底层运行机制 本节介绍 containerd它是现代容器技术栈中最为核心的基础组件之一了解 containerd 有助于更深入地理解 Docker Kubernetes 的底层运行机制
### containerd 简介 ### 17.6.1 containerd 简介
[containerd](https://containerd.io/) 是一个行业标准的容器运行时,它最初是由 Docker 引擎中剥离出来的一个核心组件,后来 Docker 将其捐赠给了云原生计算基金会(CNCF),目前已经是一个 CNCF 毕业(Graduated)项目。 [containerd](https://containerd.io/) 是一个行业标准的容器运行时,它最初是由 Docker 引擎中剥离出来的一个核心组件,后来 Docker 将其捐赠给了云原生计算基金会(CNCF),目前已经是一个 CNCF 毕业(Graduated)项目。
@@ -13,7 +13,7 @@
简单来说当你在使用 Docker 或者 Kubernetes 真正去底层调用操作系统接口 Linux Namespace Cgroups来启动和管理容器进程的往往是 containerd及它所调用的 runc 组件 简单来说当你在使用 Docker 或者 Kubernetes 真正去底层调用操作系统接口 Linux Namespace Cgroups来启动和管理容器进程的往往是 containerd及它所调用的 runc 组件
### Docker Kubernetes 的关系 ### 17.6.2 Docker Kubernetes 的关系
理解 containerd首先要理清它与用户日常操作的 Docker 以及 Kubernetes 的关系 理解 containerd首先要理清它与用户日常操作的 Docker 以及 Kubernetes 的关系
@@ -37,14 +37,14 @@ Kubernetes 作为一个容器编排系统,为了屏蔽底层不同容器运行
- 随着 containerd 原生支持了 CRI 插件Kubernetes 开始直接与 containerd 通信去掉了 `dockershim` `dockerd` 的中间层这就是为什么从 Kubernetes v1.24 开始弃用 Docker引发了广泛关注实际上 Kubernetes 只是弃用 `dockershim`底层依然在使用从 Docker 基因中诞生的 containerd - 随着 containerd 原生支持了 CRI 插件Kubernetes 开始直接与 containerd 通信去掉了 `dockershim` `dockerd` 的中间层这就是为什么从 Kubernetes v1.24 开始弃用 Docker引发了广泛关注实际上 Kubernetes 只是弃用 `dockershim`底层依然在使用从 Docker 基因中诞生的 containerd
- containerd 2.0 移除了已弃用的 CRI v1alpha2 接口仅保留 CRI v1Kubernetes v1.26 起仅支持 CRI v1如果集群中仍有依赖 CRI v1alpha2 的组件升级 containerd 2.x 前需先完成迁移containerd 2.32026 4 是首个 LTS 版本支持从 1.7 LTS 直接升级生产环境推荐使用 - containerd 2.0 移除了已弃用的 CRI v1alpha2 接口仅保留 CRI v1Kubernetes v1.26 起仅支持 CRI v1如果集群中仍有依赖 CRI v1alpha2 的组件升级 containerd 2.x 前需先完成迁移containerd 2.32026 4 是首个 LTS 版本支持从 1.7 LTS 直接升级生产环境推荐使用
### 为什么直接使用 containerd ### 17.6.3 为什么直接使用 containerd
对普通应用开发者来说Docker 依然是本地开发和测试的首选但对于构建云平台自动化流水线或深度管理 Kubernetes 集群的系统工程师来说直接使用 containerd 可以带来 对普通应用开发者来说Docker 依然是本地开发和测试的首选但对于构建云平台自动化流水线或深度管理 Kubernetes 集群的系统工程师来说直接使用 containerd 可以带来
- **更高的性能与更少的开销**去掉了 Docker Daemon 等附加组件的资源占用链路更短 - **更高的性能与更少的开销**去掉了 Docker Daemon 等附加组件的资源占用链路更短
- **更强的稳定性**作为专注于运行时的底层组件它的核心功能极为稳定且更新受控 - **更强的稳定性**作为专注于运行时的底层组件它的核心功能极为稳定且更新受控
- **直接符合 Kubernetes CRI 标准**在生产级 Kubernetes 集群中作为标准配置 - **直接符合 Kubernetes CRI 标准**在生产级 Kubernetes 集群中作为标准配置
### 基础用法与工具介绍 ### 17.6.4 基础用法与工具介绍
不同于 `docker` 命令行工具containerd 提供了不同的客户端来满足不同的使用场景 不同于 `docker` 命令行工具containerd 提供了不同的客户端来满足不同的使用场景
+5 -5
View File
@@ -2,15 +2,15 @@
本节介绍容器技术生态中的安全运行时机制主要探讨在隔离性和安全性上比标准 Linux 容器更进一步的方案重点介绍 Kata Containers gVisor 本节介绍容器技术生态中的安全运行时机制主要探讨在隔离性和安全性上比标准 Linux 容器更进一步的方案重点介绍 Kata Containers gVisor
### 为什么需要安全容器 ### 17.7.1 为什么需要安全容器
标准的 Linux 容器 DockerPodman 或基础的 containerd/runc 所提供的依赖于 Linux 内核的 **Namespace命名空间** **Cgroups控制组** 来实现进程级别的隔离与资源限制这种轻量级的虚拟化方式共享同一个宿主机的内核 标准的 Linux 容器 DockerPodman 或基础的 containerd/runc 所提供的依赖于 Linux 内核的 **Namespace命名空间** **Cgroups控制组** 来实现进程级别的隔离与资源限制这种轻量级的虚拟化方式共享同一个宿主机的内核
尽管这种方式在性能和启动速度上拥有巨大优势但也带来了一个显著的缺点**隔离性Isolation不足**如果某个容器内的恶意进程利用了宿主机内核的漏洞完成了越狱Privilege Escalation它将对整个宿主机以及其上运行的所有其他容器造成毁灭性威胁 尽管这种方式在性能和启动速度上拥有巨大优势但也带来了一个显著的缺点**隔离性Isolation不足**如果某个容器内的恶意进程利用了宿主机内核的漏洞完成了越狱Privilege Escalation它将对整个宿主机以及其上运行的所有其他容器造成毁灭性威胁
如果在公有云环境多租户场景或运行不可信的第三方代码时共享内核显然是不够安全的为了解决这一问题社区推出了安全容器Secure Containers/Sandboxed Containers的概念安全容器的核心理念是提供类似虚拟机的强隔离性同时保持类似容器的轻量快速启动和标准化管理 如果在公有云环境多租户场景或运行不可信的第三方代码时共享内核显然是不够安全的为了解决这一问题社区推出了安全容器Secure Containers/Sandboxed Containers的概念安全容器的核心理念是提供类似虚拟机的强隔离性同时保持类似容器的轻量快速启动和标准化管理
### 什么是 Kata Containers ### 17.7.2 什么是 Kata Containers
[Kata Containers](https://katacontainers.io/) 是一个开源项目,由 OpenStack Foundation(现更名为 OpenInfra Foundation)托管。它将早期的两个项目——Intel Clear Containers 和 Hyper runV 结合而成。 [Kata Containers](https://katacontainers.io/) 是一个开源项目,由 OpenStack Foundation(现更名为 OpenInfra Foundation)托管。它将早期的两个项目——Intel Clear Containers 和 Hyper runV 结合而成。
@@ -24,7 +24,7 @@ Kata Containers 的核心思路是:**使用轻量级的虚拟机(Lightweight
- **兼容性**Kata Containers 完全实现了 OCIOpen Container Initiative规范和 CRIContainer Runtime Interface标准这意味着它可以作为 `containerd` `Docker` 的底层运行时无缝替换默认的 `runc` - **兼容性**Kata Containers 完全实现了 OCIOpen Container Initiative规范和 CRIContainer Runtime Interface标准这意味着它可以作为 `containerd` `Docker` 的底层运行时无缝替换默认的 `runc`
- ** Kubernetes 集成** Kubernetes 你可以为一个特定的 Pod 指定 `runtimeClassName: kata`让高敏感的任务自动运行在虚拟机级别的隔离环境中 - ** Kubernetes 集成** Kubernetes 你可以为一个特定的 Pod 指定 `runtimeClassName: kata`让高敏感的任务自动运行在虚拟机级别的隔离环境中
### 什么是 gVisor ### 17.7.3 什么是 gVisor
[gVisor](https://gvisor.dev/) 是由 Google 开发并开源的一种不同流派的沙箱容器运行时方案。 [gVisor](https://gvisor.dev/) 是由 Google 开发并开源的一种不同流派的沙箱容器运行时方案。
@@ -38,7 +38,7 @@ gVisor 的核心组件是一个名为 **Sentry** 的用户空间进程。Sentry
- 因为 Sentry 在用户态实现了一套 Linux 系统调用接口它极大减少了应用直接接触底层操作系统内核的表面积这样就有效防御了利用底层内核漏洞突破隔离的攻击方式 - 因为 Sentry 在用户态实现了一套 Linux 系统调用接口它极大减少了应用直接接触底层操作系统内核的表面积这样就有效防御了利用底层内核漏洞突破隔离的攻击方式
- gVisor 同样兼容 OCI 规范其核心运行时组件称为 `runsc`可以作为底层运行时与 Docker Kubernetes 进行集成 - gVisor 同样兼容 OCI 规范其核心运行时组件称为 `runsc`可以作为底层运行时与 Docker Kubernetes 进行集成
### 总结与对比 ### 17.7.4 总结与对比
| 特性 | 标准 Linux 容器 (runc) | Kata Containers | gVisor (runsc) | | 特性 | 标准 Linux 容器 (runc) | Kata Containers | gVisor (runsc) |
| :--- | :--- | :--- | :--- | | :--- | :--- | :--- | :--- |
+4 -4
View File
@@ -2,7 +2,7 @@
本节介绍 WebAssembly (简写为 Wasm) 以及它为何成为现代容器生态中备受瞩目的前沿技术路线 本节介绍 WebAssembly (简写为 Wasm) 以及它为何成为现代容器生态中备受瞩目的前沿技术路线
### 什么是 WebAssembly ### 17.8.1 什么是 WebAssembly
[WebAssembly (Wasm)](https://webassembly.org/) 最初是由 W3C 主导的一项为了解决网页中 JavaScript 性能瓶颈而发明的技术标准。它是一种小体积的、加载极快的、提供安全沙盒的高效二进制格式的指令集架构。通过将 C/C++、Rust、Go 等高级语言编译成 `.wasm` 格式,这些程序可以直接在所有现代的浏览器中以接近原生代码的速度安全地运行。 [WebAssembly (Wasm)](https://webassembly.org/) 最初是由 W3C 主导的一项为了解决网页中 JavaScript 性能瓶颈而发明的技术标准。它是一种小体积的、加载极快的、提供安全沙盒的高效二进制格式的指令集架构。通过将 C/C++、Rust、Go 等高级语言编译成 `.wasm` 格式,这些程序可以直接在所有现代的浏览器中以接近原生代码的速度安全地运行。
@@ -10,7 +10,7 @@
因为开源社区很快意识到Wasm 所具备的核心特性完美契合了云原生后端的诉求人们制定了诸如 **WASI (WebAssembly System Interface)** 这样的标准将其能力从浏览器扩展到了服务器端操作系统上 因为开源社区很快意识到Wasm 所具备的核心特性完美契合了云原生后端的诉求人们制定了诸如 **WASI (WebAssembly System Interface)** 这样的标准将其能力从浏览器扩展到了服务器端操作系统上
### Wasm 与容器特性的完美契合 ### 17.8.2 Wasm 与容器特性的完美契合
Wasm 应用于服务端时它展现出了一些可能比传统 Linux 容器更为优异的特性 Wasm 应用于服务端时它展现出了一些可能比传统 Linux 容器更为优异的特性
@@ -27,7 +27,7 @@
4. **极小的包体积** 4. **极小的包体积**
Linux 容器需要打包一整套依赖甚至是简化的 OS 根目录结构而一个编译好的功能完善的 Wasm 模块体积常常不到几兆甚至仅仅几十 Kb极大地加快了存储及网络利用效率 Linux 容器需要打包一整套依赖甚至是简化的 OS 根目录结构而一个编译好的功能完善的 Wasm 模块体积常常不到几兆甚至仅仅几十 Kb极大地加快了存储及网络利用效率
### Docker 遇上 WebAssembly ### 17.8.3 Docker 遇上 WebAssembly
在现代的容器生态系统中Wasm 并不被看作是要被取代传统的 Docker 或者 Kubernetes 的技术而是成为了一种 ** Linux 容器互补并且共生** 的全新工作负载类型 在现代的容器生态系统中Wasm 并不被看作是要被取代传统的 Docker 或者 Kubernetes 的技术而是成为了一种 ** Linux 容器互补并且共生** 的全新工作负载类型
@@ -38,6 +38,6 @@
如今在 Docker Desktop 或者集成了 `containerd` 的环境中我们可以十分简易地以类似普通镜像的形式去拉取并运行一个基于 Wasm 编译的后端服务通过指定相应的 `--platform` 或者是特别的 `--runtime=io.containerd.wasmedge.v1` 设置将其如同对待一个标准应用进程一样让 Docker 为其接管日志配置相关的网络端口映射甚至通过 Docker Compose 将一个普通的数据库容器实例与一个 Wasm 微服务实例协同起来混布 如今在 Docker Desktop 或者集成了 `containerd` 的环境中我们可以十分简易地以类似普通镜像的形式去拉取并运行一个基于 Wasm 编译的后端服务通过指定相应的 `--platform` 或者是特别的 `--runtime=io.containerd.wasmedge.v1` 设置将其如同对待一个标准应用进程一样让 Docker 为其接管日志配置相关的网络端口映射甚至通过 Docker Compose 将一个普通的数据库容器实例与一个 Wasm 微服务实例协同起来混布
### 总结 ### 17.8.4 总结
随着技术底座如 WASI 规范不断的成熟完善例如提供完备的套接字网络支持以及系统资源访问支持我们有理由相信不仅是边缘计算与无服务器调用会有越来越多对于速度和安全性有极高指标要求的云原生后端微服务开始采用这一颠覆传统边界的轻量级微型智能体架构在可见的将来Wasm 势必成为云原生与 Docker 生态的重要拼图 随着技术底座如 WASI 规范不断的成熟完善例如提供完备的套接字网络支持以及系统资源访问支持我们有理由相信不仅是边缘计算与无服务器调用会有越来越多对于速度和安全性有极高指标要求的云原生后端微服务开始采用这一颠覆传统边界的轻量级微型智能体架构在可见的将来Wasm 势必成为云原生与 Docker 生态的重要拼图