地  址:江苏省南京市玄武区玄武湖
电  话:4008-888-888
邮  箱:9490489@qq.com
商  务QQ:6777101068
免费建设网站:容器技能开源项目综述
作者:管理员    发布于:2020-06-08 15:58   文字:【】【】【
容器技能开源项目综述 2015年容器大火,围绕着容器技能的开展也涌现了许多新项目。同时,许多“老”项目也初步支撑容器当做运转环境。

2015年容器大火,围绕着容器技能的开展也涌现了许多新项目。同时,许多 老 项目也初步支撑容器当做运转环境。下面先容这些项目:

一、标准规范类

容器利用了Linux内核的特性,Docker的成功也主要在于其充沛挖掘了此类特性。但Docker风行之后,社区初步考虑如何界说一套完整的容器标准规范,使容器的标准再也不局限于Docker。同时,Docker仅仅界说了一个容器,多容器的互联也需要标准规范。下面提到的项目是现在干流的规范,有的并不是为容器而生,但也在为容器标准化做出努力。

1. OCF

OCF(Open Container Format)是由OCI(Open Container Initiative)颁布的一套容器标准和运转时环境,其开始版本基于Docker影象和运转时,可是最终意图是界说一套不受任何软硬件平台、不受任何公司和项目束缚的容器规范。OCI由各大厂商合成,包含谷歌、红帽、华为等。OCF对规范容器标准指定了5条规定:

- 规范化操作:例如,创立容器、删除容器、打包容器等操作都有必要规范化;

- 内容无关性:不管容器内部内容是什么,上述操作不克不及有任何行为上的变化;

- 平台无关性:在任何OCI支撑的平台上,上述操作都有必要可以无不同执行;

- 为主动化而设计:规范容器是为主动化而生,其标准有必要成全主动化前提;

- 企业级交给:规范容器需要适用于企业级流水线交给使命。

下面简要先容OCF规范。现在,OCI界说一个容器包括如下内容:

├── config.json

├── runtime.json

├── rootfs/

config.json表示与容器相关的配置,例如启动容器之后执行的命令,容器的环境变量等

runtime.json表示与host相关的配置,例如对cgroup、namespace的支撑

rootfs表示容器可见的根目录,即容器中的 / 目录。OCF对其内容不作限定,常见的子目录有lib, bin等等。

任何基于OCF标准完成的命令行东西,都能够解析上述内容并治理容器,例如runC(github/opencontainers/runc),TODO。

现在为止,OCI主要精神集中在容器运转环境,之后,OCI还将对容器打包、验证、分发等模块进行规范化。总而言之,OCI是继Docker大火之后,社区对容器规范的一种尝试,目前现已得到十分多大公司的认可。

2. appC

appC是CoreOS提出的容器运转规范,早于OCF规范。CoreOS现在是OCI成员之一,在鼎力推动OCI的开展,appC和OCI最终可能会集并为一个规范。差别于OCI,appC愈加成熟,其内容除了容器运转时环境,还包含:

- 打包标准:appC界说了怎么将一个应用打包(tar文件),怎么保持环境变量、挂载点等内容。相比之下,OCF仅界说了目录结构。

- 影象验证:appC界说了怎么验证影象内容未被批改过,怎么保证影象平安传输;

- 影象传输:appC界说了影象传输的机制,包含s, bittorrent等,这一点与Docker的centralized hub有显着的差异。

现在基于appC标准现已有不少完成,如Jetpack, Kurma, rkt等。其间rkt是CoreOS对appC的规范完成。

3. Nulecule

Docker对应用的打包方式仅仅局限于个别容器层面,大家能够利用Dockerfile形容一个容器配置,而后打包、分发影象,之后该容器便能够在任何Linux机器上运转。可是,Docker短缺一个多容器运转的规范:既怎么形容一个由多容器合成的应用。现在一些基于Docker的集群治理体系现已可以支撑多容器的布置,好比Docker Swarm,Kuberes,可是这些体系并无界说一个规范的、通用的、可移植的格局。此外,此类体系的特点是将多容器应用的布置作为体系的状态,即他们更多的是强调应用的调理、互联、监控,而非应用的布置。短缺复合应用的支撑,使Docker的许多特点相形见绌,由于实践出产环境中的应用必定是由多应用形成的。例如:大家目前能够很方便地布置一个redis容器,可是布置redis cluster容器很艰难,更不消说基于redis cluster的应用。

红帽公司在2015年提出了Nulecule,该项目界说了一个多容器应用布置的标准,包含应用的元数据、依赖、参数配置等等。应用颁布者只要要按照Nulecule的标准提供给用的形成方式,而后将此形成方式打包成Docker影象颁布。Nulecule的打包方式能够参考:github/projectatomic/nulecule/tree/master/spec/examples/template。 详细来讲,Nucecule包含以下文件:

├── Dockerfile

├── artifacts

│ └── kuberes

│ ├── pod.json

│ └── service.json

├── Nulecule

└── README.md

Dockerfile将该目录所有文件打包成Docker影象;

Nulecule文件是详细的应用形容,例如每一个组件的容器影象,还包含上面提到的依赖、参数配置等;

artifacts目录包含基层集群治理体系所利用的配置文件。

Nulecule自身只是一个标准文档,红帽公司基于Nulecule完成了Project Atomic,包含命令行东西atomic。运转一个应用和运转一个容器的方式简直同样,例如:利用下述命令即可启动一个应用: atomic run pany/myapp:v0.1 。其间影象`pany/myapp:v0.1`为前文提到的打包后的Docker影象。

4. TOSCA

TOSCA(Topology and Orchestration Specification for Cloud Applications),是OASIS维护的一套用于形容应用和根底设备的规范,包含效劳组件类型、组件关系、操作方式(例如,布置,补丁,关机)等等。这些形容独立于创立效劳的供给商、任何特定的提供商或托管效劳的技能。采用TOSCA规范的项目主要有OpenStack Heat,Cloudify等。

TOSCA并不是为容器而生,有人将TOSCA和Nulecule做比照,以为Nulecule能够大概天文解成容器版的TOSCA 。虽然有类似的地方,但TOSCA包括了很多标准细则,触及面十分广。

5. Cloud Native

通过长时间开展,范畴渐渐知道到应用架构模式现已成为云核算开展的瓶颈,因而,外洋简直所有互联网公司联结建立了Cloud Native Computing Foundation,来促成云核算的开展,旨在提高企业对上述模式的选用程度。简单来讲,cloud native指的是:

- 容器为载体:利用容器当做应用运转、交给的载体,能够提高开发功率、增大代码重用率、简化布置等;

- 动静治理:成立一套中间治理体系(私有云或)来动静调理容器、机器资源,提高运维功率,机器利用率;

- 微效劳架构:使用效劳依赖解耦合来提高灵敏性,贬低代码维护开支。

二、项目类

本节综述了现在开源社区和互联网公司围绕容器技能开发的相关项目。这里只罗列出了颇为完善和风行的项目。

1. Docker Machine

Docker Machine是Docker公司为解决Docker装配、环境配置等问题而开发项目,目前现已支撑10余种云平台和虚构机软件,包含AWS、OpenStack、VirtualBox等。创立一个支撑Docker的机器只要要利用命令: docker-machine create  d virtualbox default  。Docker Machine屏蔽了基层资源的杂乱性,使得开发人员能够主动化创立、删除机器资源,尽量地防止在平台区别性上耗费精神。

2. Swarm

Swarm是Docker公司为解决容器集群化而开发的项目。Swarm将多台主机笼统成一台主机,用户能够像利用一台主机般利用Docker。例如,当利用命令 docker run app 时,Swarm会依据集群状态将容器调理到一台长途的效劳器运转,用户相同能够利用 docker ps 来查看其时容器状态。关于用户而言,Swarm的调理是通明的。

Swarm极大程度地兼容了Docker的API,同时有用地调理集群资源,向容器集群化迈出了一大步。Swarm还在不断开发中,需要解决容器互联、数据同享等迫切问题。

3. Compose

Compose是Docker公司解决容器编排的项目,其前身是Fig项目。Compose解决的问题相似Nulecule标准,既怎么布置多容器应用。不论是Docker自身也好,Machine、Swarm等项目也好,都集中在了单容器应用,Compose很大程度上是对前面项意图增补。用户向Compose提交一个yaml文件,包括所有容器的配置,例如各自的端口、容器互联信息等;Compose依据该文件内容,启动容器。Compose的详细格局,能够参考:docs.docker/pose/yml

4. Mesos

Mesos是一套资源治理与调理平台,现在能够支撑上千台机器的治理使命。Mesos对资源的治理方式是特有的双重调理:Mesos核心调理器负责治理所有机器资源,并为上层Framework提供核算资源。Framework是第二层调理器,它依据核心调理器提供的资源判断是否成全须要,如果成全须要,则运转Framework所治理的使命;不然从头像核心调理器请求资源。常见的Framework有Marathon, Chronos,别离负责长期运转的效劳和Cron使命,别的Framework还包含常用的平台,例如Spark、Hadoop等。

5. Kuberes

Kuberes来自于Google内部的大范围集群治理东西B,依据官方说法 Kuberes代表了Google以前十余年设计、构建和治理大范围容器集群的经验 。简单地说,Kuberes是一个治理跨主机的容器化应用的体系,支撑多容器布置、高可用性、应用弹性伸缩、跨主机网络、负载均衡、效劳发现等应用级功用,同时支撑集群自恢复机制、资源调理、资源阻隔、监控等集群级功用。Kuberes是现在唯独恪守 一切皆容器 的项目,既所有功用都是基于 应用容器化 完成,并安稳而疾速地开展着。

6. Hyper

Hyper是HyperHQ公司颁布了的一个开源项目,初衷是结合Docker容器和虚构机的好处,能够在hypervisor上运转Docker影象的引擎。依据Hyper官方的说法,他们与Docker的核心差异在于Hyper没有利用Container技能,而是经过VM间接运转Docker影象,是一个彻底基于虚构化的解决方案。

7. Containerd

Containerd是docker公司开源项目,旨在为runC提供守护步调。Containerd因循了docker C/S的结构,server守护步调的核心是一个eventloop,负责监听容器的创立,毁掉,快照等工作;client名为ctr,经过gRPC与server通讯。

Containerd还处在十分前期的阶段,功用还其实不完善。docker公司颁布该项意图主要是标明其对容器生态环境的支撑,也同时吸取runC高档特性对docker进行互补。

8. Clear Container

Clear Container是由intel推出的Clear Linux( Clear Linux是Intel提供的面向云场景的linux发行版)中的一项技能, 经过将虚构机和容器结合起来,旨在提供平安容器。官方声称方针是让用户能够充沛利用虚构机的阻隔,同时领有容器的布置能力。 

* 三、最小OS

** 1. RancherOS

RancherOS是Rancher Labs的一个开源项目,其主旨是开发一个支撑docker的最小化操作体系。在RancherOS中,所有应用都采用容器,包含体系程序udev, rsyslog等;同时,RancherOS用docker daemon取代了传统的初始化体系如sysvinit、systemd。承载初始化使命的docker daemon称为体系Docker,该体系docker会创立一个不凡的体系效劳容器,即用户Docker,来负责治理用户的docker容器,防止了用户对体系docker容器的间接操作。详细体系结构能够参与github项目主页:github/rancher/os

** 2. CoreOS

CoreOS自身是Linux的一个发行版,但与别的发行版(如Centos、Ubuntu)有着很大的差异:CoreOS是为容器集群而生。差别于许多基于Linux做容器治理、编排体系的项目,CoreOS将这些功用并入了操作体系中。这样,每一个装有CoreOS的主机就能随时随地加入一个CoreOS集群而不需要额定配置。对开发人员而言,无论集群中有多少CoreOS主机,操作办法都是同样的。

CoreOS主要开发了两个项目来达成这一意图:etcd和Fleet。etcd是散布式的键值存储体系,主要负责CoreOS集群中节点间的效劳发现和配置同享;etcd提供多种功用来保证集群的高可用性。Fleet是散布式的systemd体系。对用户而言,与操作单机systemd无不同,fleet会将用户的systemd unit动静分发到集群中。

** 3. Project Atomic

Project Atomic是红帽公司开发的操作体系,专门为运转容器而作了优化。Project Atomic采用docker运转容器、kuberes治理容器,利用systemd做体系效劳,rpm-ostree做体系确保理。其间rpm-ostree完成了Atomic晋级,是红帽主推的功用之一。它的核心原理是晋级操作体系是原子操作。Atomic会将需要晋级的内容保存在专门的目录,分开存储,云云以来,Atomic能够将操作体系的变更进行版本管束,当呈现问题,能够疾速回滚到上一个版本。

** 4. Ubuntu Core

snappy Ubuntu是一个专为云平台和智能设施打造的全新ubuntu操作体系。Canonical公司对Ubuntu Core的核心上风做出以下几点探讨:

- 平安 Snappy应用受Canonical的AppArmor内核平安体系压制,该体系提供了严厉的、基于MAC的阻隔和人道化的平安配置文件。

- 牢靠性 Snappy能够提供牢靠的更新,在主动修复平安问题的同时,它还可以更快地更新云上的效劳器。

- 更好的开发体验 创立snappy Ubuntu应用比传统打包方式简单许多。

- 扩展性 Ubuntu Core支撑许多模块化框架,它们能够由与Canonical互助的供给商提供。

ubuntu core包括四层:Application, Framework, Ubuntu Core和Enablement层。Application层将所有应用进行了阻隔,因而用户能够下载装配恣意的应用;fromework曾用来扩张ubuntu core,例如docker便是ubuntu core中的一个framework,为ubuntu core提供运转容器的框架。Ubuntu Core层即Canonical提供的最小OS,用户能够经过snappy命令行装配多个ubuntu core,来对体系进行原子更新。Enablement层是硬件层,由设施提供商或者Canonical公司提供。

Canonical公司有意将snappy装配模式引入到新的ubuntu桌面体系,使snappy确保理和debian packages (deb)共存。至于是否snappy会替代dpkg,另有待工夫的考量。

** 5. Microsoft Nano

Nano是Windows Server带来一个全新的Nano Server选项。这是微软配合Docker所发生的一个基层的OS. 据微软称,Nano Server体积十分修长、极为精简,极佳上风,剥离了GUI,专心于云根底设备、云应用程序以及容器。

** 6. Vmware Photon

Vmare Photon是Vmware为vSphere而优化的Linux发行版,专门为运转容器而生,支撑多项容器技能如docker, rkt和pivatal garden container。Vmware Photon的设计也恪守了别的最小化OS,具有运转快,体积修长,强化容器平安等好处。Photon的主要利用对象是采用了Vmware虚构化技能的客户 - Photon能够使他们轻松地在已有的根底设备中运转容器,并得到企业级的支撑。

本文作者:才云科技CTO 邓德源

Copyright © 2002-2020 h5在线制作免费_免费建站的网站 网页_免费制作网站_在线建站_网站制作价格 版权所有 (网站地图
地址:江苏省南京市玄武区玄武湖 电话:4008-888-888
邮箱:9490489@qq.com QQ:6777101068