浅析容器运行时奥秘——OCI标准

本文介绍了Open Container Initiative(OCI)的背景及其在容器生态中的作用,详细讲解了OCI Runtime规范,包括基本理念、配置、生命周期管理和Linux下的配置示例。通过runC的使用示例,展示了如何创建和管理容器,揭示了容器运行时的原子操作和解耦原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

导语

容器技术火起来了以后,Docker的容器镜像和容器运行时已然成为行业的标准。此后,为了推进容器生态的健康发展。在Linux基金会的主导下,Docker和各大云厂商Google, Amazon, CloudFoundary, Microsoft积极响应于2016年成立了 “Open Container Initiative”,旨在主导容器的生态发展方向,促进容器生态的健康发展。本文主要介绍容器底层的运行标准OCI的背景和主要内容,最后通过用runC构建容器的示例带你了解容器背后不一样的故事。


背景

2013年Docker开源了容器镜像格式和运行时以后,为我们提供了一种更为轻量、灵活的“计算、网络、存储”资源虚拟化和管理的解决方案,在业界迅速火了起来。

2014年更是容器技术发展的一个爆发点,各种容器编排工具也逐步开始发力。值得一提的是Google发布了Kubernetes的第一个Release版本,现已成长为容器编排领域的领导者。

我们知道Docker的容器运行时解决方案采用的两个核心技术:Namespace(资源隔离)和Cgroup(资源管理),并不是Docker实现的。这两项技术其实在Docker之前早已进入Linux内核。换种说法就是Docker的容器解决方案离不开Linux内核的支持。这就是说行业的各个大佬如果自己想搞,都可以利用这两项技术自己做一套类似于Docker的容器解决方案。

到这里就引出了故事的另一个主角: Linux基金会。

容器技术火起来了以后,Docker的容器镜像和容器运行时已然成为行业的标准。彼时,Docker正当红,对各大佬(Linux基金会、谷歌、微软等)提出的合作邀请充耳不闻,态度强硬,力图独自主导容器生态的发展。加上Docker在Runtime的向下兼容性的问题,社区口碑较差。此时,各大佬就纷纷表示要另起炉灶、自已干,其中比较有代表性的就是Google声称要fork一个分支自己干。

不过,Linux基金会最后还是拉着前边提的这些大佬向Docker施压,最终Docker屈服,并于 2015 年 6 月在 Docker 大会DockerCon上推出容器标准,随后便成立了OCI(Open Container Initiative),并发展成为Linux基金会下的一个项目。在OCI的官网可以看到如下描述:

The Open Container Initiative (OCI) is a lightweight, open governance structure (project), formed under the auspices of the Linux Foundation, for the express purpose of creating open industry standards around container formats and runtime. The OCI was launched on June 22nd 2015 by Docker, CoreOS and other leaders in the container industry.
The OCI currently contains two specifications: the Runtime Specification (runtime-spec) and the Image Specification (image-spec). The Runtime Specification outlines how to run a “filesystem bundle” that is unpacked on disk. At a high-level an OCI implementation would download an OCI Image then unpack that image into an OCI Runtime filesystem bundle. At this point the OCI Runtime Bundle would be run by an OCI Runtime.

在这两段描述中透露出2点关键信息:

  • OCI是在Linux基金会主导下的轻量级的开源管理项目。旨在为容器格式和运行时构建开放的行业标准。
  • OCI标准目前包含两部分内容:
    - 容器运行时规范: 该规范定义了如何根据相应的配置构建容器运行时。
    - 容器镜像规范: 该规范定义了容器运行时使用的镜像的打包规范。

总的来说OCI的成立促进了社区的持续创新,同时可以防止行业由于竞争导致的碎片化,容器生态中的各方都能从中获益。目前在行业中遵循OCI标准的容器解决方案比较熟悉的有:

Docker
Rocket(CoreOS)
warden (Cloud Foundary)

OCI Runtime 规范

基本理念

OCI规范了容器的配置、执行环境和生命周期管理。容器的配置信息由config.json配置文件来管理。规范容器的执行环境可以保证容器内运行的应用在生命周期内拥有一致的运行环境。总的来说OCI希望通过规范容器的配置、执行环境和生命周期管理,进而达到Docker所提出的“Build, Ship, and Run any app, anwhere”愿景,为了达到这个目的,OCI在制定之初提出了以下5个理念:

  1. 操作标准化:
    对容器整个生命周期内相关的标准化进行标准化,包括:创建、启动、停止、创建快照、暂停、恢复等操作。规范每个操作的具体含义,将容器的具体操作进行原子化规范。
  2. 内容无关:
    内容无关指不管针对的具体容器内容是什么,容器标准操作执行后都能产生同样的效果。如容器可以用同样的方式上传、启动,不管是PostgreSQL还是MySQL数据库服务。
  3. 基础设施无关:<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值