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