先說和虛擬化技術的區別:
難道虛擬技術就做不到嗎?
不不不,虛擬技術也可以做到,但是會有一定程度的性能損失,靈活度也會下降。容器技術不是模仿硬件層次,而是 在Linux內核里使用cgroup和namespaces來打造輕便的、將近裸機速度的虛擬技術操作系統環境。因為不是虛擬化存儲,所以容器技術不會管 底層存儲或者文件系統,而是你放哪里,它操作哪里。
這從根本上改變了我們如何虛擬化工作負載和應用程序,因為容器速度比硬件虛擬化技術更快,更加便捷,彈性擴容的更加高效,只是它的工作負載要求操作系統,而不是Linux或特定的Linux內核版本。
那VMWare就這樣玩完了?
沒那么快!虛擬技術相對成熟,又有廣泛的工具,還有生態系統來支持它在不同環境下的配置。至於工作負載,它要求非Linux操作系統,或者只能使用特定的核心虛擬化技術。
--------------------------------------
Docker並不是LXC的替代品,Docker的底層就是使用了LXC來實現的。LXC將Linux進程沙盒化,使得進程之間相互隔離,並且能夠控制各進程的資源分配。
在LXC的基礎之上,Docker提供了一系列更強的功能。
可移植性
Docker定義了一種新的格式,將應用和其依賴環境全部打包到一個單一對象中,這個對象可以在任何安裝有Docker的機器上共享,在任何機器上 執行這個對象的效果都是一樣的。LXC僅僅實現了進程沙盒化,並不能在不同機器上進行移植。Docker將應用的所有配置進行抽象,打包到一個容器中,使 得該容器具有可移植性。
以應用為中心
Docker針對應用的部署做了優化,反映在其API,用戶接口,設計原理及文檔上面。而LXC僅僅關注容器作為一個輕量級的服務器。
自動化構建
Docker中支持Dockerfile,將應用的所有依賴項,構建工具和包都以源碼的形式寫在Dockerfile中,然后Docker可以根據Dockerfile構建鏡像。該鏡像在任何機器上面運行的效果都一樣。
版本控制
Docker對容器提供了類Git的版本控制功能,支持版本回滾等功能。Docker也實現了增量上傳和下載的功能,節約了上傳和下載時的帶寬資源。
組件重用
一個鏡像可以作為基礎鏡像來創建更多特定的鏡像,鏡像之間支持多層重用。
鏡像共享
Docker開發了一個Docker Hub,里面包含了各種常用的鏡像,非常方便,我們也可以將自己的鏡像上傳到Docker Hub中。用戶也可以在私有環境中搭建自己的Docker倉庫,用來滿足鏡像的內部共享。
工具生態系統
Docker定義了一個API,用於自動化和本地化容器的創建和部署。已經存在大量的集成了Docker的工具集,例如Deis,mesos,docker-ui,jenkins等等。
原文:http://stackoverflow.com/questions/17989306/what-does-docker-add-to-just-plain-lxc
轉自:http://blog.csdn.net/wangtaoking1/article/details/45043523