摘要:年容器大火,圍繞著容器技術(shù)的發(fā)展也涌現(xiàn)了許多新項目。項目類本節(jié)綜述了目前開源社區(qū)和互聯(lián)網(wǎng)公司圍繞容器技術(shù)開發(fā)的相關(guān)項目。是公司開源項目,旨在為提供守護進程。
2015年容器大火,圍繞著容器技術(shù)的發(fā)展也涌現(xiàn)了許多新項目。同時,許多“老”項目也開始支持容器作為運行環(huán)境。下面介紹這些項目:
規(guī)范標準類容器使用了Linux內(nèi)核的特性,Docker的成功也主要在于其充分挖掘了此類特性。但Docker流行之后,社區(qū)開始思考怎么定義一套完整的容器規(guī)范標準,使容器的規(guī)范不再局限于Docker。同時,Docker僅僅定義了一個容器,多容器的互聯(lián)也需要規(guī)范標準。下面提到的項目是目前主流的標準,有的并非為容器而生,但也在為容器規(guī)范化做出努力。
OCF
OCF(Open Container Format)是由OCI(Open Container Initiative)發(fā)布的一套容器規(guī)范和運行時環(huán)境,其初步版本基于Docker鏡像和運行時,但是最終目的是定義一套不受任何軟硬件平臺、不受任何公司和項目束縛的容器標準。OCI由各大廠商組成,包括谷歌、紅帽、華為等。OCF對標準容器規(guī)范指定了5條規(guī)則:
標準化操作:例如,創(chuàng)建容器、刪除容器、打包容器等操作都必須標準化;
內(nèi)容無關(guān)性:不管容器內(nèi)部內(nèi)容是什么,上述操作不能有任何行為上的變化;
平臺無關(guān)性:在任何OCI支持的平臺上,上述操作都必須能夠無差別執(zhí)行;
為自動化而設(shè)計:標準容器是為自動化而生,其規(guī)范必須滿足自動化條件;
企業(yè)級交付:標準容器需要適用于企業(yè)級流水線交付任務(wù)。
下面簡要介紹OCF標準。目前,OCI定義一個容器包含如下內(nèi)容:
config.json
runtime.json
rootfs/
config.json表示與容器相關(guān)的配置,例如啟動容器之后執(zhí)行的命令,容器的環(huán)境變量等
runtime.json表示與host相關(guān)的配置,例如對cgroup、namespace的支持
rootfs表示容器可見的根目錄,即容器中的“/”目錄。OCF對其內(nèi)容不作約束,常見的子目錄有l(wèi)ib, bin等等。
任何基于OCF規(guī)范實現(xiàn)的命令行工具,都可以解析上述內(nèi)容并管理容器,例如runC(click here),TODO。
目前為止,OCI主要精力集中在容器運行環(huán)境,之后,OCI還將對容器打包、驗證、分發(fā)等模塊進行標準化。總而言之,OCI是繼Docker大火之后,社區(qū)對容器標準的一種嘗試,現(xiàn)在已經(jīng)得到非常多大公司的認可。
appCappC是CoreOS提出的容器運行標準,早于OCF標準。CoreOS目前是OCI成員之一,在大力推進OCI的發(fā)展,appC和OCI最終可能會合并為一個標準。不同于OCI,appC更加成熟,其內(nèi)容除了容器運行時環(huán)境,還包括:
打包規(guī)范:appC定義了如何將一個應(yīng)用打包(tar文件),如何保持環(huán)境變量、掛載點等內(nèi)容。相比之下,OCF僅定義了目錄結(jié)構(gòu)。
鏡像驗證:appC定義了如何驗證鏡像內(nèi)容未被修改過,如何保證鏡像安全傳輸;
鏡像傳輸:appC定義了鏡像傳輸?shù)臋C制,包括https, bittorrent等,這一點與Docker的centralized hub有明顯的區(qū)別。
目前基于appC規(guī)范已經(jīng)有不少實現(xiàn),如Jetpack, Kurma, rkt等。其中rkt是CoreOS對appC的標準實現(xiàn)。
NuleculeDocker對應(yīng)用的打包方式僅僅局限于單個容器層面,我們可以使用Dockerfile描述一個容器配置,然后打包、分發(fā)鏡像,之后該容器便可以在任何Linux機器上運行。但是,Docker缺少一個多容器運行的標準:既如何描述一個由多容器組成的應(yīng)用。目前一些基于Docker的集群管理系統(tǒng)已經(jīng)能夠支持多容器的部署,比如Docker Swarm,Kubernetes,但是這些系統(tǒng)并沒有定義一個標準的、通用的、可移植的格式。此外,此類系統(tǒng)的特點是將多容器應(yīng)用的部署當做系統(tǒng)的狀態(tài),即他們更多的是強調(diào)應(yīng)用的調(diào)度、互聯(lián)、監(jiān)控,而非應(yīng)用的部署。缺少復(fù)合應(yīng)用的支持,使Docker的許多特點黯然失色,因為實際生產(chǎn)環(huán)境中的應(yīng)用必然是由多應(yīng)用構(gòu)成的。例如:我們現(xiàn)在可以很方便地部署一個redis容器,但是部署redis cluster容器很困難,更不用說基于redis cluster的應(yīng)用。
紅帽公司在2015年提出了Nulecule,該項目定義了一個多容器應(yīng)用部署的規(guī)范,包括應(yīng)用的元數(shù)據(jù)、依賴、參數(shù)配置等等。應(yīng)用發(fā)布者只需要依照Nulecule的規(guī)范提供應(yīng)用的構(gòu)成方式,然后將此構(gòu)成方式打包成Docker鏡像發(fā)布。Nulecule的打包方式可以參考:點擊這里。 具體來講,Nucecule包括以下文件:
|- Dockerfile
|-artifacts
│ ? └── kubernetes
│ ? ? ? |- pod.json
│ ? ? ? └── service.son
|- Nulecule
└── README.md
Dockerfile將該目錄所有文件打包成Docker鏡像;
Nulecule文件是具體的應(yīng)用描述,例如每個組件的容器鏡像,還包括上面提到的依賴、參數(shù)配置等;
artifacts目錄包括底層集群管理系統(tǒng)所使用的配置文件。
Nulecule本身只是一個規(guī)范文檔,紅帽公司基于Nulecule實現(xiàn)了Project Atomic,包括命令行工具atomic。運行一個應(yīng)用和運行一個容器的方式幾乎相同,例如:使用下述命令即可啟動一個應(yīng)用:“atomic run company/myapp:v0.1”。其中鏡像company/myapp:v0.1為前文提到的打包后的Docker鏡像。
TOSCATOSCA(Topology and Orchestration Specification for Cloud Applications),是OASIS維護的一套用于描述應(yīng)用和基礎(chǔ)設(shè)施的標準,包括服務(wù)組件類型、組件關(guān)系、操作方式(例如,部署,補丁,關(guān)機)等等。這些描述獨立于創(chuàng)建服務(wù)的供應(yīng)商、任何特定的云服務(wù)提供商或托管服務(wù)的技術(shù)。采用TOSCA標準的項目主要有OpenStack Heat,Cloudily等。
TOSCA并非為容器而生,有人將TOSCA和Nulecule做對比,認為Nulecule可以粗略地理解成容器版的TOSCA 。盡管有相似之處,但TOSCA包含了大量規(guī)范細則,涉及面非常廣。
Cloud Native經(jīng)過長期發(fā)展,云計算領(lǐng)域逐漸認識到應(yīng)用架構(gòu)模式已經(jīng)成為云計算發(fā)展的瓶頸,因此,國外幾乎所有互聯(lián)網(wǎng)公司聯(lián)合成立了Cloud Native Computing Foundation,來促進云計算的發(fā)展,旨在提高企業(yè)對上述模式的采納程度。簡單來講,cloud native指的是:
容器為載體:使用容器作為應(yīng)用運行、交付的載體,可以提高開發(fā)效率、增大代碼重用率、簡化部署等;
動態(tài)管理:建立一套中心管理系統(tǒng)(私有云或公有云)來動態(tài)調(diào)度容器、機器資源,提高運維效率,機器使用率;
微服務(wù)架構(gòu):利用服務(wù)依賴解耦合來提高敏捷性,降低代碼維護開銷。
項目類本節(jié)綜述了目前開源社區(qū)和互聯(lián)網(wǎng)公司圍繞容器技術(shù)開發(fā)的相關(guān)項目。這里只列舉出了較為完善和流行的項目。
Docker Machine
Docker Machine是Docker公司為解決Docker安裝、環(huán)境配置等問題而開發(fā)項目,現(xiàn)在已經(jīng)支持10余種云平臺和虛擬機軟件,包括AWS、OpenStack、VirtualBox等。創(chuàng)建一個支持Docker的機器只需要使用命令:“docker-machine create –d virtualbox default” 。Docker Machine屏蔽了底層資源的復(fù)雜性,使得開發(fā)人員可以自動化創(chuàng)建、刪除機器資源,盡可能地避免在平臺差異性上消耗精力。
Swarm
Swarm是Docker公司為解決容器集群化而開發(fā)的項目。Swarm將多臺主機抽象成一臺主機,用戶可以像使用一臺主機般使用Docker。例如,當使用命令“docker run app”時,Swarm會根據(jù)集群狀態(tài)將容器調(diào)度到一臺遠程的服務(wù)器運行,用戶同樣可以使用“docker ps”來查看當前容器狀態(tài)。對于用戶而言,Swarm的調(diào)度是透明的。Swarm極大程度地兼容了Docker的API,同時有效地調(diào)度集群資源,向容器集群化邁出了一大步。Swarm還在不斷開發(fā)中,需要解決容器互聯(lián)、數(shù)據(jù)共享等迫切問題。
Compose
Compose是Docker公司解決容器編排的項目,其前身是Fig項目。Compose解決的問題類似Nulecule規(guī)范,既如何部署多容器應(yīng)用。不管是Docker本身也好,Machine、Swarm等項目也好,都集中在了單容器應(yīng)用,Compose很大程度上是對前面項目的補充。用戶向Compose提交一個yaml文件,包含所有容器的配置,例如各自的端口、容器互聯(lián)信息等;Compose根據(jù)該文件內(nèi)容,啟動容器。Compose的具體格式,可以參考:https://docs.docker.com/compo...
Mesos
Mesos是一套資源管理與調(diào)度平臺,目前可以支持上千臺機器的管理任務(wù)。Mesos對資源的管理方式是獨有的兩層調(diào)度:Mesos核心調(diào)度器負責管理所有機器資源,并為上層Framework提供計算資源。Framework是第二層調(diào)度器,它根據(jù)核心調(diào)度器提供的資源判斷是否滿足需求,如果滿足需求,則運行Framework所管理的任務(wù);否則重新像核心調(diào)度器申請資源。常見的Framework有Marathon, Chronos,分別負責長時間運行的服務(wù)和Cron任務(wù),其他Framework還包括常用的大數(shù)據(jù)平臺,例如Spark、Hadoop等。
Kubernetes
Kubernetes來自于Google內(nèi)部的大規(guī)模集群管理工具Borg,根據(jù)官方說法“Kubernetes代表了Google過去十余年設(shè)計、構(gòu)建和管理大規(guī)模容器集群的經(jīng)驗”。簡單地說,Kubernetes是一個管理跨主機的容器化應(yīng)用的系統(tǒng),支持多容器部署、高可用性、應(yīng)用彈性伸縮、跨主機網(wǎng)絡(luò)、負載均衡、服務(wù)發(fā)現(xiàn)等應(yīng)用級功能,同時支持集群自恢復(fù)機制、資源調(diào)度、資源隔離、監(jiān)控等集群級功能。Kubernetes是目前唯一遵循“一切皆容器”的項目,既所有功能都是基于“應(yīng)用容器化”實現(xiàn),并穩(wěn)定而快速地發(fā)展著。
Hyper
Hyper是HyperHQ公司發(fā)布了的一個開源項目,初衷是結(jié)合Docker容器和虛擬機的優(yōu)點,可以在hypervisor上運行Docker鏡像的引擎。根據(jù)Hyper官方的說法,他們與Docker的核心區(qū)別在于Hyper沒有使用Container技術(shù),而是通過VM直接運行Docker鏡像,是一個完全基于虛擬化的解決方案。
Containerd
Containerd是docker公司開源項目,旨在為runC提供守護進程。Containerd沿襲了docker C/S的結(jié)構(gòu),server守護進程的核心是一個eventloop,負責監(jiān)聽容器的創(chuàng)建,銷毀,快照等事件;client名為ctr,通過gRPC與server通信。Containerd還處在非常早期的階段,功能還并不完善。docker公司發(fā)布該項目的主要是表明其對容器生態(tài)環(huán)境的支持,也同時汲取runC高級特性對docker進行互補。
Clear Container
Clear Container是由intel推出的Clear Linux( Clear Linux是Intel提供的面向云場景的linux發(fā)行版)中的一項技術(shù), 通過將虛擬機和容器結(jié)合起來,旨在提供安全容器。官方宣稱目標是讓用戶可以充分使用虛擬機的隔離,同時擁有容器的部署能力。
RancherOS
RancherOS是Rancher Labs的一個開源項目,其宗旨是開發(fā)一個支持docker的最小化操作系統(tǒng)。在RancherOS中,所有應(yīng)用都采用容器,包括系統(tǒng)程序udev, rsyslog等;同時,RancherOS用docker daemon取代了傳統(tǒng)的初始化系統(tǒng)如sysvinit、systemd。承載初始化任務(wù)的docker daemon稱為系統(tǒng)Docker,該系統(tǒng)docker會創(chuàng)建一個特殊的系統(tǒng)服務(wù)容器,即用戶Docker,來負責管理用戶的docker容器,避免了用戶對系統(tǒng)docker容器的直接操作。具體系統(tǒng)結(jié)構(gòu)可以參加github項目主頁:https://github.com/rancher/os
CoreOS
CoreOS本身是Linux的一個發(fā)行版,但與其他發(fā)行版(如Centos、Ubuntu)有著很大的區(qū)別:CoreOS是為容器集群而生。不同于許多基于Linux做容器管理、編排系統(tǒng)的項目,CoreOS將這些功能并入了操作系統(tǒng)中。這樣,每個裝有CoreOS的主機就可以隨時隨地加入一個CoreOS集群而不需要額外配置。對開發(fā)人員而言,無論集群中有多少CoreOS主機,操作方法都是相同的。CoreOS主要開發(fā)了兩個項目來達到這一目的:etcd和Fleet。etcd是分布式的鍵值存儲系統(tǒng),主要負責CoreOS集群中節(jié)點間的服務(wù)發(fā)現(xiàn)和配置共享;etcd提供多種功能來保證集群的高可用性。Fleet是分布式的systemd系統(tǒng)。對用戶而言,與操作單機systemd無差別,fleet會將用戶的systemd unit動態(tài)分發(fā)到集群中。
Project Atomic
Project Atomic是紅帽公司開發(fā)的操作系統(tǒng),專門為運行容器而作了優(yōu)化。Project Atomic采用docker運行容器、kubernetes管理容器,使用systemd做系統(tǒng)服務(wù),rpm-ostree做系統(tǒng)包管理。其中rpm-ostree實現(xiàn)了Atomic升級,是紅帽主推的功能之一。它的核心原理是升級操作系統(tǒng)是原子操作。Atomic會將需要升級的內(nèi)容保存在專門的目錄,分開存儲,如此以來,Atomic可以將操作系統(tǒng)的變更進行版本控制,當出現(xiàn)問題,可以快速回滾到上一個版本。
Ubuntu Core
Ubuntu是一個專為云平臺和智能設(shè)備打造的全新ubuntu操作系統(tǒng)。Canonical公司對Ubuntu Core的核心優(yōu)勢做出以下幾點評論:安全:Snappy應(yīng)用受Canonical的AppArmor內(nèi)核安全系統(tǒng)限制,該系統(tǒng)提供了嚴格的、基于MAC的隔離和人性化的安全配置文件。可靠性:Snappy可以提供可靠的更新,在自動修復(fù)安全問題的同時,它還能夠更快地更新云上的服務(wù)器。更好的開發(fā)體驗:創(chuàng)建snappy Ubuntu應(yīng)用比傳統(tǒng)打包方式簡單許多。擴展性:Ubuntu Core支持許多模塊化框架,它們可以由與Canonical合作的供應(yīng)商提供。ubuntu core包含四層:Application, Framework, Ubuntu Core和Enablement層。Application層將所有應(yīng)用進行了隔離,因此用戶可以下載安裝任意的應(yīng)用;fromework曾用來擴張ubuntu core,例如docker即是ubuntu core中的一個framework,為ubuntu core提供運行容器的框架。Ubuntu Core層即Canonical提供的最小OS,用戶可以通過snappy命令行安裝多個ubuntu core,來對系統(tǒng)進行原子更新。Enablement層是硬件層,由設(shè)備提供商或者Canonical公司提供。Canonical公司有意將snappy安裝模式引入到新的ubuntu桌面系統(tǒng),使snappy包管理和debian packages (deb)共存。至于是否snappy會代替dpkg,還有待時間的考量。
Microsoft Nano
Nano是Windows Server帶來一個全新的Nano Server選項。這是微軟配合Docker所產(chǎn)生的一個底層的OS. 據(jù)微軟稱,Nano Server體積非常苗條、極為精簡,極佳優(yōu)勢,剝離了GUI,專注于云基礎(chǔ)設(shè)施、云應(yīng)用程序以及容器。
VMware Photon
Vmare Photon是Vmware為vSphere而優(yōu)化的Linux發(fā)行版,專門為運行容器而生,支持多項容器技術(shù)如docker, rkt和pivatal garden container。Vmware Photon的設(shè)計也遵循了其他最小化OS,具有運行快,體積苗條,強化容器安全等優(yōu)點。Photon的主要使用對象是采用了Vmware虛擬化技術(shù)的客戶 - Photon可以使他們輕松地在已有的基礎(chǔ)設(shè)施中運行容器,并得到企業(yè)級的支持。
原文作者:
才云科技首席技術(shù)官 鄧德源
曾為美國谷歌(Google)集群管理組核心成員(Cluster Management Team),主要參與開發(fā)集群管理系統(tǒng):該系統(tǒng)為谷歌所有運維工程師提供統(tǒng)一的集群管理入口,是谷歌自動化運維的重要組成部分,其主要職責:管理運維工程師提交的生產(chǎn)環(huán)境變更請求,自動化風險分析,自動化生產(chǎn)環(huán)境準備工作,以及各種集群容錯處理。此系統(tǒng)保證了系統(tǒng)升級、軟硬件錯誤等均能及時被發(fā)現(xiàn)并處理,保證谷歌集群能24/7小時不間斷工作。在谷歌期間作為核心成員參加了開發(fā)基于容器集群的谷歌開源項目(Kubernetes),一度成為全球前十的貢獻者和貢獻最高的華人。該項目將谷歌多年內(nèi)部使用容器的經(jīng)驗以開源的形式呈現(xiàn)給所有開發(fā)者,被稱為谷歌用來顛覆現(xiàn)有云計算市場和技術(shù),在谷歌內(nèi)部受到極高的重視和優(yōu)先級,在開源和云計算社區(qū)也獲得了極高地反響。
于2013年獲美國頂級計算機學府Carnegie Mellon University (CMU)大學電子與計算機工程學位,專修操作系統(tǒng)、分布式計算等方向。2011年畢業(yè)于電子科技大學機械與自動化專業(yè)。于2010年參與亞太機器人大賽,代表電子科大獲全國第一名,后代表中國隊在埃及獲金牌。
(如果需要轉(zhuǎn)載,請聯(lián)系我們哦,尊重知識產(chǎn)權(quán)人人有責;)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/26521.html
摘要:效果圖為了讓效果更明顯,特意設(shè)置了兩邊字體大小不同關(guān)鍵代碼父容器子容器這里要提一下的是,只對于內(nèi)聯(lián)元素或者內(nèi)聯(lián)內(nèi)容有效,比如說為塊級元素標簽設(shè)置行高,實際上是為標簽中的內(nèi)聯(lián)文字設(shè)置了行高。允許指定負長度值和百分比值。 前言 先扯一段廢話來引入好了。又很久沒有寫文章了(間接性躊躇滿志,持續(xù)性混吃等死),幾個月了登上來看到有人收藏和點贊,感到很慚愧,最近主要精力花費在react和redux...
摘要:貢獻者飛龍版本最近總是有人問我,把這些資料看完一遍要用多長時間,如果你一本書一本書看的話,的確要用很長時間。為了方便大家,我就把每本書的章節(jié)拆開,再按照知識點合并,手動整理了這個知識樹。 Special Sponsors showImg(https://segmentfault.com/img/remote/1460000018907426?w=1760&h=200); 貢獻者:飛龍版...
閱讀 2103·2023-05-11 16:55
閱讀 3504·2021-08-10 09:43
閱讀 2618·2019-08-30 15:44
閱讀 2440·2019-08-29 16:39
閱讀 583·2019-08-29 13:46
閱讀 2005·2019-08-29 13:29
閱讀 921·2019-08-29 13:05
閱讀 691·2019-08-26 13:51