docker容器與傳統虛擬化的區別是什么

區別:1、傳統虛擬化的創建速度很慢,而容器虛擬化創建速度很快;2、傳統虛擬化增加了系統調節鏈的環節有性能損耗,而容器虛擬化共性內核,幾乎沒有性能損耗;3、傳統虛擬化支持多種操作系統,而容器虛擬化僅支持內核所支持的操作系統。

docker容器與傳統虛擬化的區別是什么

本教程操作環境:linux7.3系統、docker-1.13.1版、Dell G3電腦。

docker容器與傳統虛擬化的區別是什么

傳統的虛擬化技術

虛擬化,是指通過虛擬化技術將一臺計算機虛擬為多臺邏輯計算機。在一臺計算機上同時運行多個邏輯計算機,每個邏輯計算機可運行不同的操作系統,并且應用程序都可以在相互獨立的空間內運行而互不影響,從而顯著提高計算機的工作效率。

隨著硬件廠商的不斷發展,很多在虛擬機里面的指令不需要通過虛擬的硬件層走到真正的硬件層.硬件廠商是支持直接在虛擬機里面實用指令操作硬件,這個技術我們就稱為是硬件輔助的虛擬化.這種硬件的輔助虛擬化比起軟件虛擬的硬件層來說,他不需要模擬所有的硬件.有些指令是直接運行在虛擬機上來操作硬件的.性能和效率比傳統的虛擬化高更高些.

系統級別的虛擬化

特點:

不需要模擬硬件層.

共享同一個宿主機的內核

傳統虛擬化和容器虛擬化的區別

docker容器與傳統虛擬化的區別是什么

Container的核心技術

1.CGroup限制容器的資源使用

2.Namespace機制,實現容器間的隔離

3.chroot,文件系統的隔離.

CGroup:

Linux內核提供的限制,記錄和隔離進程組所使用的資源.由Google的工程師提出,后臺被整合到內核中.通過不同的子系統來實現對不同資源使用的控制和記錄.

/sys/fs/cgroup

Namespace:

pid:容器有自己獨立的進程表和1號線程.

net:容器有自己獨立的network info

ipc:在ipc通信的時候,需要加入額外信息來標示進程

mnt:每個容器都有自己唯一的目錄掛載

utc:每個容器都有獨立的hostname和domain

chroot:

在宿主機中的某個目錄就是容器中的根目錄.

所有的應用程序都有自己的依賴關系,其中包括軟件和硬件資源。 Docker是開發者的開放平臺,通過將每個應用程序打包到容器中來隔離依賴關系。容器就像是輕量級的虛擬機,可以擴展到成千上萬的節點,通過在不同虛擬環境中運行相同應用程序來幫助提升云的可移植性。虛擬機廣泛用于云計算,通過使用虛擬機來實現隔離和資源控制。 虛擬機使用自己的內存管理加載完整的操作系統,使應用程序更加高效和安全,同時確保其高可用性。

Docker容器與虛擬機有什么不同??

??虛擬機具有完整的操作系統,其自身的內存管理通過相關的虛擬設備進行支持。 在虛擬機中,為用戶操作系統和虛擬機管理程序分配有效的資源,從而可以在單臺計算機(或主機)上并行運行一個或多個操作系統的多個實例。 每個客戶操作系統都作為主機系統中的單個實體運行。?

??另一方面,Docker容器是使用Docker引擎而不是管理程序來執行的。 因此容器比虛擬機小,并且由于主機內核的共享,可以更快地啟動,具有更好的性能,更少的隔離和更好的兼容性。 Docker容器能夠共享一個內核并共享應用程序庫,因此容器比虛擬機具有更低的系統開銷,只要用戶愿意使用單一平臺來提供共享的操作系統,容器可以更快,更少資源。虛擬機可能需要幾分鐘才能創建并啟動,而只需幾秒鐘即可創建并啟動一個容器。與在虛擬機中運行應用程序相比,容器中包含的應用程序提供了卓越的性能。?

??Docker容器比虛擬機弱的一個關鍵指標就是“隔離”。英特爾的VT-d和VT-x技術為虛擬機提供了ring-1硬件隔離技術,因此虛擬機可以充分利用它的優勢。它可以幫助虛擬機器高效使用資源和防止相互干擾。 Docker容器還沒有任何形式的硬件隔離,因此它們容易受到攻擊。

如何進行進行選擇??

??選擇容器還是虛擬機依賴于應用程序如何設計。 如果應用程序旨在提供可伸縮性和高可用性,那么容器是最好的選擇,否則應用程序可以放置在虛擬機中。對于高I/O要求的業務,例如數據庫服務,建議部署Docker+物理機,因為在虛擬機中部署Docker,I/O性能將受到虛擬機的限制。對于虛擬桌面服務等強調租戶權限和安全的業務,建議采用虛擬機方式,虛擬機的多租戶強隔離特性,保證租戶在擁有虛機root權限的同時,其他租戶和主機的安全。?

??或者更好的選擇是混合方案,運行在虛擬機中的容器。 Docker容器可以在虛擬機內部運行,虛擬機并為它們提供經過驗證的隔離,安全屬性,移動性,動態虛擬網絡等。為實現安全隔離和資源的高利用率,基本應該遵循:不同租戶的業務運行采用虛擬機隔離,相似類型的業務部署在同一組容器上的思路。

結論

??Docker容器正在成為devops環境中的一個重要工具。 DevOps領域內的Docker Containers的用例非常多。在Docker容器上運行應用程序,然后在任何地方部署(Cloud或內部部署或任何Linux的風格)現在都已成為現實。?

??在異構環境中工作,虛擬機提供了高度的靈活性,而Docker容器主要關注應用程序及其依賴關系。Docker Containers允許通過使用每個云的虛擬機環境來處理云,從而輕松移植跨云的應用程序。這代表了一個有用的功能,在沒有Docker Containers的情況下,必須以更加復雜和乏味的方式來實現。這里闡述的并不是關于放棄虛擬機,而是在必要時除了虛擬機之外,根據實際情況使用Docker容器,不認為Docker容器可以完全清除虛擬機。

推薦學習:《docker視頻教程

以上就是

? 版權聲明
THE END
喜歡就支持一下吧
點贊12 分享