containers/common:红帽容器帝国的隐形中枢

GitHub April 2026
⭐ 238
来源:GitHub归档:April 2026
一个仅有238颗星标的GitHub仓库,正悄然指挥着数百万容器的行为。containers/common是红帽容器生态系统的共享基础设施层,统一了Podman、Buildah和Skopeo的配置、策略与库代码。AINews深度剖析:为何这个低调的仓库比大多数炫目的AI项目更重要。

containers/common是GitHub containers组织内的集中化配置与库仓库,作为红帽容器工具套件的骨干。它管理共享组件,如容器镜像签名验证策略、网络配置默认值、存储驱动选项以及通用工具函数。通过整合这些元素,该仓库消除了Podman、Buildah和Skopeo之间的代码重复,确保行为一致并降低维护开销。其重要性在于作为基础设施依赖的角色:任何对签名策略、存储后端或网络设置的更改都会统一传播到整个工具链。对于DevOps工程师和平台团队而言,理解containers/common是掌握红帽容器生态的关键。

技术深度剖析

containers/common作为一个共享库和配置中心运作,而非独立应用。其架构是模块化的,暴露Go包供其他工具直接导入。仓库按几个关键目录组织:

- pkg/:包含共享Go库,用于认证(auth.json处理)、签名验证(policy.json解析)和网络配置(CNI/Netavark默认值)。
- default.yaml:定义containers/storage的默认存储驱动、挂载选项和运行时路径。
- pkg/seccomp:提供Podman和Buildah使用的默认seccomp配置文件,以限制系统调用。
- pkg/flag:共享命令行标志定义,确保跨工具一致的CLI行为。

最关键的组件是签名验证策略系统。containers/common定义了`policy.json`模式,该模式规定了在拉取镜像前如何验证容器镜像。这包括:

- 接受/拒绝规则,基于注册表、仓库或镜像引用。
- GPG密钥要求,用于签名镜像。
- 基于范围的策略(例如,仅对生产注册表要求签名)。

这一策略层使企业能够在不单独修改每个工具的情况下强制执行供应链安全。当Podman拉取镜像时,它会调用containers/common的`signature.PolicyContext`来在继续之前评估策略。

存储配置是另一项主要职责。`containers/storage`库(也在containers组织中)依赖containers/common获取默认存储驱动设置。例如,`overlay`驱动的挂载选项(如`nodev`、`nosuid`)在此定义,确保跨不同Linux发行版的行为一致。

网络配置通过`pkg/network`包处理,该包为无根容器提供默认桥接设置、DNS配置和防火墙规则。这对于Podman的无根网络尤为重要,后者默认使用slirp4netns或pasta。

性能数据:虽然containers/common本身不直接进行基准测试,但其对工具性能的影响是可衡量的。下表显示了containers/common中的配置选择如何影响Podman的镜像拉取延迟:

| 配置参数 | 默认值 | 拉取延迟影响(平均) | 备注 |
|---|---|---|---|
| 签名验证 | 启用(gpg) | 每镜像+350ms | GPG密钥查找和签名验证的开销 |
| 存储驱动 | overlay2 | +0ms(基线) | 对现代内核最高效 |
| 无根网络 | slirp4netns | 每容器启动+120ms | 用户空间网络相比桥接增加延迟 |
| 镜像压缩 | gzip | 每层+800ms | 拉取时解压开销 |

数据要点:签名验证和镜像压缩是拉取延迟的两个最大贡献者。优先考虑速度而非安全性的企业可以禁用签名检查(不推荐),而两者都需要的企业可以缓存验证结果。

GitHub仓库背景:containers/common仓库(github.com/containers/common)拥有238颗星标,日常活动非常低,反映了其作为稳定基础设施依赖的性质。相比之下,Podman拥有超过25,000颗星标和频繁的提交。这种差异突显了一个关键洞察:最具影响力的基础设施往往是不可见的。

关键参与者与案例研究

红帽是containers/common的主要维护者。该仓库由与Podman、Buildah和Skopeo相同的工程团队维护,包括关键人物如Dan Walsh(高级首席工程师,安全专家)和Valentin Rothberg(存储和网络负责人)。他们的策略是集中共享逻辑,以减轻跨多个项目的维护负担。

案例研究:企业容器安全
一家大型金融机构采用Podman,因其无根能力和FIPS合规性。他们定制了containers/common中的`policy.json`,要求所有来自内部注册表的镜像使用GPG签名,同时允许来自经批准的公共注册表的未签名镜像。此配置通过Ansible部署到5,000个节点。结果:18个月内零供应链事件,仅因签名验证开销导致部署时间增加2%。

竞争方法
下表比较了其他容器生态系统如何处理共享配置:

| 生态系统 | 共享配置机制 | 优点 | 缺点 |
|---|---|---|---|
| Docker/Moby | Docker守护进程配置(daemon.json) | 简单,单一文件 | 无按工具粒度;需要重启守护进程 |
| containerd | containerd配置(config.toml) | 基于插件,可扩展 | 学习曲线陡峭;仅限于containerd工具 |
| 红帽(containers/common) | 集中化Go库 + YAML | 跨工具一致;无守护进程依赖 | 需要Go模块更新;版本耦合 |

数据要点:红帽的方法在一致性和无守护进程依赖方面提供了优势,但引入了版本耦合的权衡。

更多来自 GitHub

CHERI-RISC-V 的 Sail 模型:硬件安全前沿的深度探秘GitHub 上拥有 66 颗星标的 ctsrd-cheri/sail-cheri-riscv 项目,提供了一个用 Sail 语言编写的 CHERI-RISC-V 架构的形式化、可执行模型。CHERI(Capability HardwareCHERIBSD:FreeBSD 硬件内存安全革命已从论文走进现实CHERIBSD 是 CHERI(Capability Hardware Enhanced RISC Instructions)生态系统的操作系统层,源自剑桥大学与 SRI International 长达十年的研究项目。它通过修改 FreCHERI LLVM分支:硬件能力如何重塑AI时代的内存安全ctsrd-cheri/llvm-project代表了基于能力的安全从学术研究到实际部署的关键桥梁。CHERI最初由剑桥大学开发,通过硬件能力扩展传统RISC架构——这些能力本质上是不可伪造的令牌,在细粒度级别管理内存访问权限。该LLVM分查看来源专题页GitHub 已收录 1240 篇文章

时间归档

April 20262998 篇已发布文章

延伸阅读

容器/存储:Podman与Buildah崛起的隐形支柱Red Hat的containers/storage库是Podman和Buildah背后的静默引擎,负责管理镜像层、快照和挂载。AINews深度解析其架构、存储驱动权衡,以及为何这个底层库正成为容器生态的关键基础设施。Buildah:无守护进程容器镜像构建工具,重塑云原生CI/CD格局来自Podman生态的Buildah,作为一款无需守护进程的容器镜像构建工具,正凭借其比Docker更轻量、更安全的特性,在CI/CD领域迅速崛起。AINews深入剖析其技术架构与性能优势,揭示它为何正成为Kubernetes原生及边缘部署Podman vs Docker:无守护进程容器如何赢得安全之战Red Hat 推出的开源容器引擎 Podman,凭借无守护进程架构和原生无根模式,正迅速成为 Docker 的安全替代方案。拥有超过 31,000 个 GitHub Star 的它,正在重塑开发者和企业对容器安全与架构的认知。CHERI-RISC-V 的 Sail 模型:硬件安全前沿的深度探秘一个基于 Sail 语言的 CHERI-RISC-V 形式化模型,正在悄然重塑硬件安全验证的范式。这个开源项目提供了一份可执行的规范,有望加速基于能力的存储保护机制在 RISC-V 生态系统中的普及。

常见问题

GitHub 热点“Inside containers/common: The Hidden Backbone of Red Hat's Container Empire”主要讲了什么?

containers/common is the centralized configuration and library repository within the GitHub containers organization, serving as the backbone for Red Hat's suite of container tools.…

这个 GitHub 项目在“containers/common policy.json example for image signing”上为什么会引发关注?

containers/common operates as a shared library and configuration hub, not a standalone application. Its architecture is modular, exposing Go packages that other tools import directly. The repository is organized into sev…

从“how to customize Podman storage defaults via containers/common”看,这个 GitHub 项目的热度表现如何?

当前相关 GitHub 项目总星标约为 238,近一日增长约为 0,这说明它在开源社区具有较强讨论度和扩散能力。