您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)LXC與Docker之間的主要區(qū)別是什么,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
兩者的概述
容器技術(shù)獨(dú)立運(yùn)行并且從主機(jī)系統(tǒng)上封裝應(yīng)用程序工作量。把容器想象成可以安裝和運(yùn)行應(yīng)用程序的主機(jī)操作系統(tǒng)里面的操作系統(tǒng),從實(shí)用目的來講,它就像一個(gè)虛擬機(jī)。
LXC項(xiàng)目給不同配置和用戶空間應(yīng)用提供最小的容器操作樣本來管理容器生命周期, LXC項(xiàng)目的這個(gè)特性和Linux內(nèi)核使模仿機(jī)制能夠正常啟用。
便攜性
容器技術(shù)將應(yīng)用從主機(jī)操作系統(tǒng)上解耦下來,摘錄該程序并且使之在任意支持LXC的系統(tǒng)上都實(shí)現(xiàn)輕便化。低調(diào)的說法就是:非常好用。用戶在這樣一個(gè)原始和最小庫的Linux操作系統(tǒng)上可以在容器里運(yùn)行任何程序(就像是在容器里運(yùn)行LAMP堆棧)。
因?yàn)閼?yīng)用程序和工作量是相對(duì)獨(dú)立的,所以用戶可以運(yùn)行多版本的語言,比如PHP,Python,Ruby,Apache,這些語言都可以共存,隱藏在容器里。實(shí)現(xiàn)云計(jì)算,就好比是這些例子和工作量都可以靈活的被移動(dòng)到別的系統(tǒng),復(fù)制,以及快速配置。
難道虛擬技術(shù)就做不到嗎?
不不不,虛擬技術(shù)也可以做到,但是會(huì)有一定程度的性能損失,靈活度也會(huì)下降。容器技術(shù)不是模仿硬件層次,而是在Linux內(nèi)核里使用cgroup和namespaces來打造輕便的、將近裸機(jī)速度的虛擬技術(shù)操作系統(tǒng)環(huán)境。因?yàn)椴皇翘摂M化存儲(chǔ),所以容器技術(shù)不會(huì)管底層存儲(chǔ)或者文件系統(tǒng),而是你放哪里,它操作哪里。
這從根本上改變了我們?nèi)绾翁摂M化工作負(fù)載和應(yīng)用程序,因?yàn)槿萜魉俣缺扔布摂M化技術(shù)更快,更加便捷,彈性擴(kuò)容的更加高效,只是它的工作負(fù)載要求操作系統(tǒng),而不是Linux或特定的Linux內(nèi)核版本。
那VMWare就這樣玩完了?
沒那么快!虛擬技術(shù)相對(duì)成熟,又有廣泛的工具,還有生態(tài)系統(tǒng)來支持它在不同環(huán)境下的配置。至于工作負(fù)載,它要求非Linux操作系統(tǒng),或者只能使用特定的核心虛擬化技術(shù)。
LXC
LXC起源于cgroup和namespaces在Linux內(nèi)核方面的發(fā)展,它支持輕便的虛擬技術(shù)操作系統(tǒng)環(huán)境(容器技術(shù)),Daniel Lezcano和Serge Hallyn做了一些它的早期工作,這個(gè)可以追溯到2009年在IBM的時(shí)候。
LXC系統(tǒng)提供工具來管理容器,先進(jìn)的網(wǎng)絡(luò)和存儲(chǔ)支持,還有最小容器操作系統(tǒng)模板的廣泛選擇。它目前由一個(gè)兩人的團(tuán)隊(duì)領(lǐng)導(dǎo):來自Ubuntu的Stephane Graber和Serge Hallyn。LXC是由Ubuntu支持的。
如何區(qū)分他們
生產(chǎn)Docker的目的是為了盡可能減少容器中運(yùn)營的程序,減少到只運(yùn)營單個(gè)程序,并且通過Docker來管理這個(gè)程序。
有了Docker,可以從底層應(yīng)用程序通過Docker來配置,網(wǎng)絡(luò),存儲(chǔ)和編排。
LXC用正常操作系統(tǒng)環(huán)境回避那個(gè)問題,并且因此可以快速兼容所有應(yīng)用程序和工具,以及任意管理和編制層次,來替代虛擬機(jī)。
除此之外,Docker使用層次,禁用存儲(chǔ)持久性。LXC支持AUFS層次和覆蓋,對(duì)COW克隆和用brtfs、ZFS、LVM Thin快照廣泛支持,并且將選擇留給用戶。LXC容器技術(shù)里的分散存儲(chǔ)是綁定安裝的,來為用戶達(dá)到主機(jī)或者另一個(gè)容器。
Docker和LXC都設(shè)置了一個(gè)默認(rèn)的NAT網(wǎng)絡(luò)。另外,Docker設(shè)置一個(gè)端口轉(zhuǎn)發(fā)到主機(jī)上,就會(huì)有一個(gè)-p標(biāo)記,比如“-p80:80”就是80從主機(jī)轉(zhuǎn)發(fā)到容器。有NAT,本地主機(jī)就可以直接通過IP訪問容器,外部服務(wù)需要的時(shí)候可以通過IPtable規(guī)則來簡單完成,當(dāng)外部服務(wù)被消耗的時(shí)候,只需要端口轉(zhuǎn)發(fā)就可以。至于為什么需要這么做,原因目前還不是很明確。
要把事項(xiàng)復(fù)合起來,Docker只給了很少的IP和主機(jī)文件控制權(quán),所以不能給容器設(shè)置靜態(tài)IP,這對(duì)于IP的分配任務(wù)來說有點(diǎn)讓人疑惑。我們需要使用“--Links”標(biāo)記來連接容器,這個(gè)容器中要在被連接的容器中加一個(gè)入口在/etc/主機(jī)上。
有了LXC,分配靜態(tài)IP,動(dòng)態(tài)IP,使用多網(wǎng)絡(luò)設(shè)備就簡單多了,可以使用/etc/hosts文件,基本上使用Linux網(wǎng)絡(luò)全棧是沒有限制的。您希望在主機(jī)上連接容器嗎?用戶使用GRE,L2TPV3或者VXLAN來快速設(shè)置層次,或者是任意的在使用的網(wǎng)絡(luò)技術(shù)。
LXC容器技術(shù)可以無縫運(yùn)行虛擬機(jī)運(yùn)行的一切。
Docker
Docker是dotcloud也就是現(xiàn)在的Docker公司在2013年3月發(fā)布的,一開始是基于LXC項(xiàng)目來創(chuàng)建單個(gè)應(yīng)用程序容器。Docker現(xiàn)在已經(jīng)開發(fā)了他們自己的直接使用核心namespaces和cgroup的工具:libcontainer。
分層容器
Docker最開始是基于LXC對(duì)Aufs的支持來建立分層容器,因?yàn)锳ufs可能無法被合并到核心中,所以現(xiàn)在對(duì)Brtfs、設(shè)備映射和覆蓋也添加支持,
Docker容器技術(shù)是由基底鏡像構(gòu)成,當(dāng)提交變成Docker鏡像的時(shí)候會(huì)再加上一個(gè)分層面板。當(dāng)運(yùn)行一個(gè)鏡像的時(shí)候,它的復(fù)本就作為容器被啟動(dòng)了,在提交之前,它的任何數(shù)據(jù)都只是暫時(shí)的。每一個(gè)提交都是一個(gè)獨(dú)立的鏡像,所以可以從鏡像開始。
我們?cè)凇度绾斡肔XC覆蓋》里有一個(gè)指導(dǎo)說明,它給用戶描述了分層結(jié)構(gòu)是如何工作的。有了像Aufs或者覆蓋(他們?cè)趯?shí)施上、性能上有區(qū)別,而且支持一定數(shù)量的低一點(diǎn)的層次)這樣的文件系統(tǒng)的聯(lián)合,較低一點(diǎn)的層次是只讀的,而較高一點(diǎn)的層次是在運(yùn)行的時(shí)候是可讀可寫的。在容器內(nèi)容中通常是基底操作系統(tǒng),但是也不是很必要,而上層的圖層面板則是由你來修改。
雖然圖層面板的想法聽起來很不錯(cuò),但是分層文件系統(tǒng)在技術(shù)上仍然是不成熟的,在使用圖層面板的時(shí)候,還有有一個(gè)固有的復(fù)雜性和性能的損失?!断萑雸D層面板》是一個(gè)真實(shí)的冒險(xiǎn)實(shí)例,大家不妨看看。
單個(gè)應(yīng)用程序容器
Docker將容器技術(shù)限制到只能運(yùn)行單個(gè)進(jìn)程。Docker的底層鏡像操作系統(tǒng)模版不是為運(yùn)行多個(gè)應(yīng)用程序,進(jìn)程設(shè)計(jì),也不是為像init,cron,syslog,ssh等服務(wù)而設(shè)計(jì)。
我們來看早期的東西,它介紹了日復(fù)一日的用戶場(chǎng)景有一定的復(fù)雜性。因?yàn)槟壳暗募軜?gòu),應(yīng)用程序和服務(wù)是為正常的多程序操作系統(tǒng)環(huán)境設(shè)計(jì)的,所以需要去尋找一種以Docker的方式來工作或使用工具來支持Docker。
拿一個(gè)簡單的應(yīng)用程序舉個(gè)例子,比如WordPress。你可能需要建立3個(gè)容器來互相消耗服務(wù)。PHP容器,Nginx容器和MySQL容器加上2個(gè)分別用來放MysqlDB和WordPress文件持久性數(shù)據(jù)的容器。然后通過適當(dāng)?shù)臋?quán)限將WordPress文件安裝成PHP-FPM和Nginx兩種語言都可用,然后為了把東西弄得更加讓人興奮,找出一種能夠讓容器在本地網(wǎng)絡(luò)上可以互相交流的方法,不需要對(duì)網(wǎng)絡(luò)不定時(shí)的控制,也不需要Docker后臺(tái)程序設(shè)置IP!但是我們還沒有計(jì)算WordPress賬戶管理的cron和Email。哎!
為了在Docker里運(yùn)行多個(gè)程序,你需要shell 腳本,或者是一個(gè)分開的程序管理,比如runit或者管理器。但是Docker生態(tài)系統(tǒng)會(huì)將之視為“反模式“,而且Docker的整個(gè)架構(gòu)是建立在運(yùn)行單個(gè)程序的容器上的。
代碼庫
Docker為用戶提供公共或者個(gè)人push和pull鏡像的數(shù)據(jù)庫。這個(gè)跟Flockport app Store為用戶使用容器做好準(zhǔn)備有點(diǎn)相似。這樣做,對(duì)用戶來說,分享和分布應(yīng)用程序就很簡單了。
Dockerfile
Dockerfile是一個(gè)告訴Docker如何從鏡像用特定的應(yīng)用程序來創(chuàng)建容器的腳本。跟使用特定的安裝好的應(yīng)用程序通過bash腳本來創(chuàng)建一個(gè)LXC容器相似。
跟LXC拉開距離
LXC的特點(diǎn)需要通過Docker團(tuán)隊(duì)來重載實(shí)現(xiàn),使之在Docker中可用,比如LXC現(xiàn)在支持讓非根用戶創(chuàng)建和配置容器的未經(jīng)授權(quán)容器,LXC現(xiàn)在還致力于實(shí)時(shí)遷移和多主機(jī)管理。這些對(duì)容器來說都是很大的進(jìn)步,也為更好的安全性,多租戶工作量以及虛擬平價(jià)鋪平了道路。
Docker還不支持這些。隨著最近的libcontainer聲明,推測(cè)兩者間的差距還將增大。
運(yùn)行容器的方法沒有對(duì)錯(cuò)之分,容器怎么用主要取決于用戶,docker方法是獨(dú)特的,而且還將在每個(gè)階段自定義途徑成為必須途徑,并以此來找到Docker的方法從安裝和運(yùn)行應(yīng)用程序來完成任務(wù),完成彈性擴(kuò)容。
前景
虛擬技術(shù)通過操作系統(tǒng)和應(yīng)用程序被凍結(jié)在一個(gè)狀態(tài),使云計(jì)算成為可能,并將之轉(zhuǎn)化為可以從硬件和操作系統(tǒng)上輕易轉(zhuǎn)移。操作系統(tǒng)添加了很多:速度,靈活性以及可移動(dòng)性,擴(kuò)大了潛在價(jià)值。
Docker擅長用dockerfile和提交將容器和覆蓋文件系統(tǒng)包裝到一個(gè)友好的開發(fā)者模型中。只有當(dāng)你在一臺(tái)單獨(dú)的筆記本上操作的時(shí)候,像托管,監(jiān)視,存儲(chǔ)和網(wǎng)絡(luò)這樣的彈性擴(kuò)容問題才會(huì)讓這個(gè)模型復(fù)雜脆弱。
另一方面,操作系統(tǒng)容器在操作系統(tǒng)性能上跟虛擬機(jī)的相似,這使得運(yùn)用目前的工具,來集成到正常和分布式系統(tǒng)更加簡單,不需要開發(fā)任何單獨(dú)的工具。
Docker公司受到風(fēng)投支持,積極投入市場(chǎng)。眾多用戶在Docker的內(nèi)容中聽說到容器技術(shù),但是并不清楚操作系統(tǒng)容器技術(shù)以及自己所熟悉使用的??梢钥吹?,用戶單純希望運(yùn)行容器,就好像運(yùn)行一個(gè)輕量級(jí)的虛擬機(jī)一樣,他們拼命的想做到運(yùn)用單個(gè)應(yīng)用程序的容器技術(shù),分層結(jié)構(gòu)和持久存儲(chǔ)。
如果將工作量從虛擬機(jī)轉(zhuǎn)移需要額外的工程工作量,那么很多大規(guī)模用戶和企業(yè)根本不會(huì)考慮,而且轉(zhuǎn)移之后,將跟他們其他基礎(chǔ)設(shè)施的網(wǎng)絡(luò),存儲(chǔ)和托管都不兼容。
LXC就是這樣獲得承認(rèn)的,不是固執(zhí)己見,它有容器技術(shù)所有平行計(jì)算的優(yōu)點(diǎn)——從虛擬機(jī)無縫過渡到LXC,而不需要架構(gòu)師重新架構(gòu),這真是一個(gè)不可思議的價(jià)值主張。
關(guān)于“LXC與Docker之間的主要區(qū)別是什么”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。