Docker與LXC、虛擬化技術的區別——虛擬化技術本質上是在模擬硬件,Docker底層是LXC,本質都是cgroups是在直接操作硬件


先說和虛擬化技術的區別:

難道虛擬技術就做不到嗎?

不不不,虛擬技術也可以做到,但是會有一定程度的性能損失,靈活度也會下降。容器技術不是模仿硬件層次,而是 在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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM