一、OCI (Open Container Initiative / 开放容器倡议)
1. 是什么?
OCI 是一个由 Linux 基金会在 2015 年主导成立的治理委员会和项目。它的诞生背景是,当时 Docker 公司如日中天,几乎成为了容器的代名词。为了避免容器技术被单一厂商(Docker)锁定,并促进容器生态的健康发展,多家行业巨头(包括 Google, Red Hat, IBM, Microsoft, Amazon 等)联合发起了 OCI。
核心目标: 制定容器格式的开放行业标准。让任何人都可以基于这些标准来创建符合规范的容器工具,从而实现不同工具之间的互操作性。
你可以把 OCI 想象成**“容器世界的 ISO 国际标准化组织”**。它不生产任何软件,只负责制定“规则”。
2. 核心规范
OCI 主要发布了两个关键的规范(Specification),它们构成了现代容器技术的基石:
a. 运行时规范
- 定义了什么? 定义了一个**“解压后的、可运行的容器文件系统包”** 应该是什么样子,以及如何运行它。
- 核心内容:它规定了一个**
config.json** 文件。这个文件是 OCI 运行时规范的灵魂,它描述了运行一个容器所需的所有元数据,包括:- 进程信息:要运行的命令、参数、环境变量、工作目录。
- 根文件系统:指向容器根目录的路径。
- 用户:以哪个用户身份运行进程。
- 资源限制:CPU、内存的 cgroups 配置。
- 安全配置:Linux capabilities、seccomp 规则、namespaces 配置。
- 挂载点:需要挂载的
proc,sysfs,devpts等伪文件系统。
- 作用:任何一个符合 OCI Runtime 规范的工具(称为 OCI Runtime),只要拿到这个
config.json和对应的文件系统,就能以完全相同的方式启动这个容器。这实现了运行时的标准化。 - 著名实现:
runc:这是 OCI Runtime 规范的参考实现,也是目前使用最广泛的容器运行时。它由 Docker 贡献出来,现在是 CNCF 的毕业项目。Docker, containerd, CRI-O 底层默认都是用runc来实际启动容器的。crun:一个用 C 语言编写的、更轻量级的 OCI Runtime。kata-runtime:一个基于轻量级虚拟机的 OCI Runtime,提供了更强的安全隔离。
b. 镜像规范
- 定义了什么? 定义了如何创建和打包一个标准的、可移植的容器镜像。
- 核心内容:它规定了一个 OCI 镜像由以下几部分组成:
- 文件系统层:镜像不是单一的巨大文件,而是由一系列只读的文件系统层 组成。每一层代表了对上一层所做的变更(添加、删除、修改文件)。这种分层设计使得镜像构建、存储和分发都非常高效(可以复用层)。
- 清单:一个 JSON 文件,可以理解为镜像的“总目录”或“清单”。它引用了镜像的配置文件和所有相关的文件系统层。
- <

最低0.47元/天 解锁文章
1374

被折叠的 条评论
为什么被折叠?



