中国开源云联盟容器工作组《容器技术及其应用白皮书V1.0》 内容摘要 近年来,容器技术及相关应用得到了国内外越来越多的关注度,研发和应用推广发展势头迅猛。在国外,容器技术已经形成了较成熟的生态圈;在国内,金融企业、互联网企业、IT企业积极投入容器技术研发和应用推广,发展势头迅猛。为了积极引导我国容器技术和应用发展,我们编写本白皮书。其主要内容包括: 一、针对容器技术现状进行研究和分析。一是梳理了容器技术从开始到现在的发展历程,对现有容器发展的生态结构进行分析,其中包括开源社区、产业联盟、解决方案厂商等;二是对容器技术框架进行了详细的描述,对技术框架各层涉及的技术点进行了介绍;三是结合已发布的国家和国际标准,将现有容器技术对于参考架构的实现情况进行分析;四是分析了容器技术与大数据、物联网、SDN之间的关系。 二、容器技术发展路线及技术架构。通过列举容器技术典型4个应用场景,包括PaaS平台建设、软件定义数据中心、容器即服务、持续集成和发布等,分析了容器技术在各种场景下的关键成功因素。 三、容器未来发展趋势。结合容器发展现状和应用场景应用情况,分析了容器技术在应用过程中面临的问题,同时提出了容器今后发展的生态图,对未来容器技术发展进行了展望。 指导单位 工业和信息化部信息化和软件服务业司 编写单位(排名不分先后) 北京数人科技有限公司(数人云) 中国电子技术标准化研究院(工业和信息化部电子工业标准化研究院)央视国际网络有限公司(央视网) Hyper 北京凌云雀科技有限公司(灵雀云)北京天云融创软件技术有限公司 新华三集团 阿里云计算有限公司Vmware(威睿)DockOne社区 北京国电通网络技术有限公司去哪儿网 中国国际航空股份有限公司 Intel(英特尔公司)中国移动苏州研发中心 北京鼎震科技有限责任公司 编写人员 陈志峰肖德时周平杨丽蕴赵鹏牛继宾韩萍王雷周明渡闫长海刘斌胡震王志鹏吴涛张航源彭丰华王旭李亦波周小璐王锋张峻赖寒雪王洁萍何钦钦徐磊李颖杰吴国华魏晓铭吕晓旭杜永丰曹高晋张争艳徐超李璐 版权声明 本白皮书版权属于中国开源云联盟(COSCL),并受法律保护。转载、摘编或利用其它方式使用本白皮书文字或者观点的,应注明“来源:中国开源云联盟”。违反上述声明者,本联盟将追究其相关法律责任。 目录 一、概述1 1.1背景1 1.2相关术语2 1.3缩略语2 二、容器技术现状3 2.1容器技术发展演进路径3 2.2容器技术发展生态5 2.3容器技术框架5 2.3.1服务器层6 2.3.2资源管理层6 2.3.3运行引擎层7 2.3.4集群管理层7 2.3.5应用层8 2.4容器技术对参考架构的实现情况8 2.5容器技术的关键技术内容9 2.5.1镜像9 2.5.2运行时引擎10 2.5.3容器编排10 2.5.4容器集群10 2.5.5服务注册和发现11 2.5.6热迁移11 2.6容器技术与相关技术的关系12 2.6.1容器与云计算12 2.6.2容器与大数据12 2.6.3容器与物联网12 2.6.4容器与SDN13 三、容器应用13 3.1容器技术应用场景13 3.1.1PaaS平台建设13 3.1.2软件定义数据中心14 3.1.3容器即服务14 3.1.4持续集成和发布(CI/CD)15 3.2容器技术优势分析16 3.2.1从运维者维度看容器技术优势16 3.2.2从开发者维度看容器技术优势17 3.3容器技术与其他技术的集成17 四、未来发展趋势18 4.1容器技术问题分析18 4.2容器技术未来生态图及展望19 附录AOCI和CNCF基金会介绍21 附录B容器开源22 B.1Docker22 B.2Mesos22 B.3Kubernetes23 B.4DockerSwarm23 B.5Hyper23 B.6Harbor24 B.7OpenDC/OS24 附录C容器和OpenStack的关系26 附录D容器应用案例27 D.1容器技术在金融行业解决方案27 D.2容器技术在能源行业解决方案28 D.3容器技术应用在央视网API项目29 D.4Hyper公有容器云解决方案31 D.5容器技术在电信运营商容器项目案例33 D.6容器技术在教育行业应用案例35 D.7“互联网+”容器云解决方案37 一、概述 1.1背景 继虚拟化技术出现后,容器技术逐渐成为对云计算领域具有深远影响的变革技术。容器技术的发展和应用,将为各行业应用云计算提供了新思路,同时容器技术也将对云计算的交付方式、效率、PaaS平台的构建等方面产生深远的影响,具体体现在以下几个方面: 简化部署:容器技术可以将应用打包成单一地址访问的、Registry存储的、仅通过一行命令就可以部署完成的组件。不论将服务部署在哪里,容器都可以从根本上简化服务部署工作。 快速启动:容器技术对操作系统的资源进行再次抽象,而并非对整个物理机资源进虚拟化,通过这种方式,打包好的服务可以快速启动。 服务组合:采用容器的方式进行部署,整个系统会变得易于组合,通过容器技术将不同服务封装在对应的容器中,之后结合一些脚本使这些容器按照要求相互协作,这样操作不仅可以简化部署难度还可以降低操作风险。 易于迁移:容器技术最重要的价值就是为在不同主机上运行服务提供一个轻便的、一致的格式。容器格式的标准化加快交付体验,允许用户方便地对工作负载进行迁移,避免局限于单一的平台提供商。 为更好地推进容器及相关技术在中国的落地与实践,推动容器技术在国内的落地,并建立顺应国际技术发展趋势、符合中国本地化特征的容器标准体系,中国开源云联盟容器工作组开展了本白皮书的研制工作,白皮书立足于容器技术发展的演进路线图,分析容器技术在应用过程中的应用场景以及面临的具体问题和 关键成功因素,描绘容器技术未来的发展趋势和方向。 本白皮书的发布,旨在与业界分享我们在容器技术领域的研究成果和实践经验,呼吁社会各界共同关注容器技术的同时,共同推动容器技术的发展,提升容器技术在云计算领域中实践和服务能力。 1.2相关术语 表1.1术语 术语 定义/解释 镜像 系统文件及其应用文件以特殊的文件形式进行备份制作成单一的文件。 微服务架构 微服务架构是一种特定的软件应用程序设计方式——将大型软件拆分为多个独立可部署服务组合而成的套件方案。 开发运维一体化 可定义为是一种过程、方法、文化、运动或实践,主要是为了通过一条高度自动化的流水线来加强开发和其他IT职能部门之间的沟通和协作,加速软件和服务的交付。 运行时引擎 指用户用来运行容器镜像的软件系统。 1.3缩略语 表1.2缩略语 术语 解释 CI/CD ContinuousIntegration/ContinuousDelivery,持续集成和持续交付 CaaS ContainerasaService,容器即服务 CCRA CloudComputingReferenceArchitecture,云计算参考架构 CLI command-lineinterface,命令行界面 DC/OS DataCenterOperatingSystem,数据中心操作系统 DevOps DevelopmentandOperations,开发运维一体化 DNS DomainNameSystem,域名系统 IaaS InfrastructureasaService,基础设施即服务 LXC LinuxContainer,Linux容器 OCI OpenContainerInitiative,开放容器组织 PaaS PlatformasaService,平台即服务 SaaS SoftwareasaService,软件即服务 SDN SoftwareDefinedNetwork,软件定义网络 VPS VirtualPrivateServer,虚拟机专有服务 VM VirtualMachine,虚拟机 二、容器技术现状 2.1容器技术发展演进路径 图2.1容器技术演变路径 容器技术演变路径如图2.1。容器技术最早可以追溯到1979年UNIX系统中的chroot,最初是为了方便切换root目录,为每个进程提供了文件系统资源的隔离,这也是OS虚拟化思想的起源。2000年,BSD吸收并改进了chroot技术, 发布了FreeBSDJails。FreeBSDJails除文件系统隔离,还添加了用户和网络资源等的隔离,每个Jail还能分配一个独立IP,进行一些相对独立的软件安装和配置。2001年,Linux发布了LinuxVserver,LinuxVServer依旧是延续了Jails的思想,在一个操作系统上隔离文件系统、CPU时间、网络地址和内存等资源,每一个分区都被称为一个securitycontext,内部的虚拟化系统被称为VPS。2004年原SUN公司发布了SolarisContainers,SolarisContainers作为Solaris10中的特性发布的,包含了系统资源控制和zones提供的二进制隔离,Zones作为在操作系统实例内一个完全隔离的虚拟服务器存在。2005年SWsoft公司发布了OpenVZ,OpenVZ和SolarisContainers非常类似,通过打了补丁的Linux内核来提供虚拟化、隔离、资源管理和检查点。OpenVZ标志着内核级别的虚拟化真正成为主流,之后不断有相关的技术被加入内核。2006年Google发布了ProcessContainers,ProcessContainer记录和隔离每个进程的资源使用(包括CPU、内存、硬盘I/O、网络等),后改名为cgroups(ControlGroups),并在2007年被加入Linux内核2.6.24版本中。2008年出现了第一个比较完善的LXC容器技术,基于已经被加入内核的cgroups和Linuxnamespaces实现。不需要打补丁,LXC就能运行在任意vanila内核的Linux上。2011年,CloudFoundry发布了Warden,和LXC不同,Warden可以工作在任何操作系统上,作为守护进程运行,还提供了管理容器的API。2013年Google公司建立了开源的容器技术栈lmctfy,Google开启这个项目是为了通过容器实现高性能,高资源利用率,同时接近零开销的虚拟化技术。目前Kubernetes中的监控工具cAdvisor就起源于lmctfy项目,2015年Google将lmctfy的核心技术贡献给了 libcontainer。2013年Docker诞生,Docker最早是dotCloud(Docker公司的 前身,是一家PaaS公司)内部的项目,和Warden类似,Docker最初也用了LXC,后来才自己写了libcontainer替换了LXC。和其它容器技术不同的是,Docker围绕容器构建了一套完整的生态,包括容器镜像标准、容器Registry、RESTAPI、CLI、容器集群管理工具DockerSwarm等;2014年CoreOS创建了rkt,为了改进Docker在安全方面的缺陷,重写的一个容器引擎,相关容器工具产品包括:服务发现工具etcd和网络工具flannel等。2016年微软公司发布基于Windows的容器技术Hyper-VContainer,Hyper-VContainer原理和Linux下的容器技术类似,可以保证在某个容器里运行的进程与外界是隔离的,兼顾虚拟机的安全性和容器的轻量级。 2.2容器技术发展生态 随着容器技术的演进,越来越多的机构开始重视并参与到容器技术的探索中来。从最初的以Unix或Linux项目到开源社区,到各种类型的容器技术创业公司、IT企业及产业联盟,容器技术的发展生态也在逐渐得到发展与丰富。在开源社区方面,附录A中列出了国际上的OCI和CNCF(CloudNativeComputingFoundation,简称CNCF,下同),容器的开源项目也在附录B中列出;在国内的IT企业和创业公司方面,还提供了多个行业应用案例,