Docker和LXC有什么不同?
原文 http://dockone.io/article/368
【編者的話】 Docker和LXC有什么不同? 這大概是很多初學者的困惑所在,為什么說Docker不是LXC的一個替代方案呢? Docker基于LXC的基礎上做了哪些有想象力的工作呢? 本文作者就此分享了自己的一些獨特見解。
自Docker誕生以來,頂級的云服務提供商們陸續發行了他們的企業級容器服務。
但是,他們之中的一小部分仍然掛出一些基礎問題的QA,像“什么是Docker,Docker和LXC的異同,Docker和VM的比較”。
而在這篇文章里,我們將深入研究Docker和LXC的真正不同之處。
Docker不是lxc的一個替代方案。“lxc”是指linux內核(尤指命名空間以及Cgroup)的一個特性,它允許其他一些沙盒進程運行在一塊相對獨立的空間,并且能夠方便的控制他們的資源調度。
而基于底層的內核特性的基礎上,Docker在上層構建了一個更高層次的具備多個強大功能的工具集:
- 可移植的跨機器部署。Docker定義了一個將應用打包的規范,而它的所有依賴都被封裝到了一個簡單對象里,它可以被傳輸到任意一臺能運行 Docker的機器,并且在這里啟動Docker的實例之后,它能夠確保承載應用的執行環境將會與之前所定義的完全一致。Lxc實現了進程級的沙盒封裝, 它是可移植部署的一個重要前提,但是要想實現可移植部署,僅僅是這樣可還不夠。如果你發送給我一份安裝到一個自定義LXC配置下的應用副本,那么幾乎可以 肯定的是,它在我的機器上運行的結果不會跟你的完全一樣,因為它綁定了你機器的一些特殊配置:網絡,存儲,日志,Linux發行版本等等。Docker為 這些機器的特定配置定義了一個抽象層,所以它使得這些相同的Docker容器能夠一成不變的運行在多個不同的主機上,甚至帶上各種不同的配置。
- 以應用為中心。相對于機器而言,Docker被用于優化應用的部署過程。這可以從它的API,UI,設計理念還有文檔里得到體現。反之,lxc的輔助腳本專注在把容器作為一個輕量級的
機器
使用 —— 基本上就是一堆啟動更快并且內存需求更小的服務器。我們認為容器技術的內容遠遠不止這些。 - 自動構建。Docker為開發人員引入了一個可以用來把他們的源代碼自動打包到容器里的工具,并且他們能夠對于應用的依賴,構建工具,打包服 務等有著完全的自主掌控能力。他們能夠自由的使用make,maven,chef,puppet,salt,debian包,rpm包,源碼包,或者任意 以上的結合,而無需關心機器本身的配置。
- 版本化。Docker引入了一個類似git的特性來完成一個容器的連續版本追蹤,版本之間的差異diff,新的版本的提交,回滾等。歷史記錄 信息里也包含了容器的用戶信息以及他是如何構建它的,因此生產環境的服務器你都有充足的手段去一步步的定位到最上游的開發人員。Docker也實現了一個 增量上傳和下載功能,類似于git pull,所以更換到新版本的容器只需要傳輸增量部分就行。
- 組件的重用。任意容器都能用作“基礎鏡像”來創建更特定的組件。這可以手工完成也可以做成自動構建的一部分。例如,你可以準備一個理想的 python環境,并且把它用作10個不同的應用的基礎鏡像。你所定義的標準postgresql設置可以被將來你手上的所有項目重用。諸如此類。
- 共享。Docker 有權訪問一個公共的注冊中心( https://registry.hub.docker.com/ ) 而這里有數以千計的業界人士上傳各種各樣有價值的容器:任一從redis,couchdb,postgres到irc bouncers再到rails應用服務器,hadoop甚至是多個發行版本的基礎鏡像。該注冊中心也包含了一個官方的“標準庫”,這里提供了一些由 Docker官方團隊維護的實用容器。注冊中心本身也是開源的,所以任何人都能部署他們自己的私有注冊中心來存儲和下發私有容器,例如用于內網服務器的部 署。
- 工具生態圈。Docker定義了一個API來自動化和個性化的創建和部署容器。也因此催生了眾多的工具集成到Docker,為之提供一些擴展 特性。類PaaS的部署(Dokku,Deis,Flynn),多節點編排(maestro, salt, mesos, openstack nova),管理看板(docker-ui, openstack horizon, shipyard),配置管理(chef, puppet),持續集成(jenkins, strider, travis)等等。Docker正在迅速的建立以它本身為標準的基于容器的工具生態圈。
原文鏈接: difference-between-docker-and-lxc (翻譯:吳佳興)
================
譯者介紹: Colstuwjx ,現就職于一家在線OTA,有點文藝,有點技術控,有點偏執。
本文由用戶 pjp 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!