华为梁辰晔:OCI容器标准的社区演进和OCI方案的实战
【51CTO.com原创稿件】2017年12月01日-02日,由51CTO主办的WOTD全球软件开发技术峰会将在深圳中州万豪酒店隆重举行。本次峰会以软件开发为主题,数十位专家级嘉宾将带来多场精彩的技术内容分享。届时,华为主任工程师梁辰晔将在微服务与容器技术分会场与来宾分享"OCI容器标准的社区演进和OCI方案的实战"的主题演讲,为大家详细阐述容器标准的目前发展状况及如何打造一套完整的OCI社区方案。51CTO诚邀您莅临大会,与我们共享技术带来的喜悦。
OCI 1.0已经发布
2015年,由Docker、IBM、微软、红帽及Google等厂商所组成的OCI联盟成立,并于2016年4月推出了第一个开放容器标准。除推出OCI Runtime标准,让开发者打包、部署应用程序,并可以自由选用不同的容器Runtime外,还推出开放容器OCI镜像标准,由容器技术社区制定规范,确立容器镜像建立、认证、部署以及命名的方式。今年早些时候,第一个标准OCI 1.0版终于正式出炉,此标准也意味容器离标准化更近一步。
时至今日,OCI容器标准发展如何了?梁辰晔老师详细做了介绍。
runtime标准已经发布了1.0版本,相对比较成熟,当前的主流容器引擎包括runc, rkt, runv等都能兼容runtime标准。image 标准也已经发布了1.0版本,但是这个标准仅限于格式标准。OCI Image格式和Docker的镜像格式非常相似(因为OCI Image格式完全借鉴Docker的镜像格式),包括一个完整的分层技术和描述文件。
目前,OCI社区提供工具来验证 “某个runtime是否符合runtime标准”, 也提供工具来验证“某个image是否符合image标准”。
对 runtime的验证,是用每个标准项的预期的结果和实际的结果进行对比,如果全部一致,证明符合标准,反之则会报错。例如,要验证一个程序执行过程中的环境变量是否和设定的一致,那么只要把运行中的环境变量和配置里的环境变量进行对比即可。对image的验证,是判断某个image的各层、各配置项是否符合OCI含义,如果有不合规的配置,那么说明这个镜像 “非OCI标准”。
OCI路标
存在不可忽视的缺陷
容器标准的发展历史尚短,目前主要存在两个缺陷:
1. 镜像发现获取机制的欠缺, 这也是和主流的Docker/rkt的最大差距
镜像标准制定了镜像的格式,但是“从哪获取镜像,如何获取”,都是问题。这就限制了OCI镜像的流行,因为用户或开发者根本找不到一个可用的镜像。针对于此,社区的做法是从Docker里面获取一个Docker镜像,然后转化成OCI镜像。但很明显,这个根本无法商业化。
这也可以说明Docker为什么流行,就是Docker的镜像应用比较丰富,镜像的制作和发布很方便。OCI没有了镜像的分发机制,就只能是一个理论上的产物。
2. 无法覆盖更多的场景
容器方案千差万别,OCI社区无法预知到一个能够符合所有场景的标准。比如 runV,也有一些选项是OCI无法满足的。
梁辰晔老师表示,目前容器标准能够相安无事还是因为社区里面Docker一家独大,未来容器标准能否覆盖更多的方案还未知,那个时候才是真正考验“标准”社区的时候。
打造完整的OCI社区方案
说到如何打造一套完整的OCI社区方案,目前可以参考的还是 Docker方案。
Docker里包括:1. Hub:负责镜像的托管。 2. Build:负责镜像的制作。 3. Dockerfile :镜像制作的配置文件。4. Docker pull/push:负责镜像的传输 5. Image:本地管理,把获取的镜像在本地理起来。 6. Docker run:负责镜像的运行。其中,4~6都是Docker命令来完成。
这里的 1~5,其实都与镜像相关,只有6与runtime相关。因此可以看到,一个完整的 OCI方案,需要有大量的镜像相关的操作。而这些都是OCI里没有的,也是未来OCI社区要做的事情。
梁辰晔老师将在WOTD现场,用当前的开源项目为原型演示一个完整的OCI方案。
OCI的架构图
向“商业成熟”努力
目前,OCI按照先易后难的原则聚焦运行时和镜像格式的标准化,1.0标准发布之后,OCI的标准范围会逐渐扩大到镜像发现机制、镜像获取机制等内容,引入新的项目。未来OCI社区的方案肯定会越来越“商业成熟”,那个时候才能真正体现OCI的价值。
对于PaaS云开发、部署和运维人员来说,到时就可以不用特别担心集成的runtime和选用的镜像是否有兼容问题,只要符合OCI标准就能无缝的“获取”和“运行”。
【讲师简介】
梁辰晔,华为主任工程师,从事容器相关的开发以及社区组织工作。现为Linux/OCI社区maintainer,华为容器OS社区(EulerOS iSula)的负责人。拥有10多年的社区布道、社区开发和商业产品的交付经验。先后活跃于GNOME社区、openSUSE社区,对开源开发、开源到商业的转换有深刻的理解。