1. 程式人生 > >docker到底比LXC多了些什麽

docker到底比LXC多了些什麽

設計 保險箱 差異 open 節點 自動化 openstack dock 自由

看似docker主要的OS級虛擬化操作是借助LXC, AUFS只是錦上添花。那麽肯定會有人好奇docker到底比LXC多了些什麽。無意中發現 stackoverflow 上正好有人問這個問題,

回答者是Dotcloud的創始人,出於備忘目的原文摘錄如下

除了內核特性的底層基礎之外,Docker還提供了一個具有以下強大功能的高級工具:

跨機器的便攜式部署。 Docker定義了一種將應用程序及其所有依賴綁定到一個單獨對象中的格式,該對象可以被傳輸到任何啟用docker的機器上,並在那裏執行,保證暴露給應用程序的執行環境是相同的。 Lxc實現了流程沙盒,這是便攜式部署的重要先決條件,但單靠這一點對於便攜式部署來說是不夠的。如果您向我發送了一個安裝在自定義lxc配置中的應用程序的副本,那麽它幾乎肯定不會像我們的機器那樣在您的機器上運行,因為它與您計算機的特定配置有關:網絡,存儲,日誌記錄,發行版,等等。Docker為這些特定於機器的設置定義了一個抽象,以便完全相同的docker容器可以在許多不同的機器上運行 - 不變 - 具有許多不同的配置。


以應用為中心。 Docker針對應用程序的部署進行了優化,而不是機器。這反映在其API,用戶界面,設計理念和文檔。相比之下,lxc助手腳本將容器作為輕量級的機器 - 基本上是啟動速度更快,內存更少的服務器。我們認為容器不止於此。
自動構建。 Docker包含一個工具,供開發人員自動從源代碼中組裝一個容器,完全控制應用程序的依賴關系,構建工具,打包等。他們可以自由使用make,maven,chef,puppet,salt,debian包,rpms,source tarballs,或上述的任何組合,而不管機器的配置如何。

版本。Docker包括用於跟蹤容器的連續版本,檢查版本之間的差異,提交新版本,回滾等類似git的功能。歷史記錄還包括如何組裝一個容器以及由誰來完成,因此您可以從生產服務器一路回到上遊開發商。 Docker也實現增量上傳和下載,類似於“git pull”,所以新版本的容器只能通過發送差異來傳輸。

組件重用。任何容器都可以用作“基礎圖像”來創建更專業的組件。這可以手動完成或作為自動構建的一部分。例如,您可以準備理想的python環境,並將其用作10個不同應用程序的基礎。您理想的postgresql設置可以重新用於您所有的未來項目。等等。

共享。 Docker可以訪問一個公共註冊表(http://index.docker.io),成千上萬的用戶上傳了有用的容器:從redis,couchdb,postgres到irc保險箱到rails應用服務器,以便為各種發行版本創建基礎映像。登記處還包括由碼頭工作組維護的有用容器的官方“標準庫”。註冊表本身是開源的,所以任何人都可以部署他們自己的註冊表來存儲和傳輸私有容器,例如用於內部服務器部署。


工具生態系統Docker定義了一個用於自動化和自定義容器的創建和部署的API。有大量的工具與docker集成來擴展其功能。 (Dokku,Deis,Flynn),多節點編排(maestro,salt,mesos,openstack nova),管理儀表板(docker-ui,OpenStack Horizo??n,造船廠),配置管理(廚師,puppet),持續集成(jenkins,strider,travis)等。Docker正在迅速將自己定位為基於容器的工具的標準。

docker到底比LXC多了些什麽