什麼是虛擬機? 虛擬化是在Host操作系統之上導入Guest操作系統的技術。這種技術最初是一個啟示,因為它允許開發人員在同一主機上運行的不同虛擬機中運行多個操作系統。這消除了對額外硬體資源的需求。 虛擬機或虛擬化的優點是: 多個操作系統可以在同一臺機器上運行 在出現故障的情況下,維護和恢復很容易 由 ...
什麼是虛擬機?
虛擬化是在Host操作系統之上導入Guest操作系統的技術。這種技術最初是一個啟示,因為它允許開發人員在同一主機上運行的不同虛擬機中運行多個操作系統。這消除了對額外硬體資源的需求。
虛擬機或虛擬化的優點是:
多個操作系統可以在同一臺機器上運行
在出現故障的情況下,維護和恢復很容易
由於對基礎設施的需求減少,總擁有成本也較低
在圖中,您可以看到有一個主機操作系統,其上運行著3個客戶機操作系統,它們只是虛擬機。
虛擬機的缺點
運行多個虛擬機會導致性能不穩定,因為客戶機操作系統運行在主機操作系統之上,主機操作系統將擁有自己的內核以及一組庫和依賴項。這占用了大量的系統資源,即硬碟,處理器,尤其是RAM。
管理程式不如主機操作系統有效
啟動過程很長,需要時間
這些缺點導致了一種稱為容器化的新技術的出現。現在讓我告訴你容器化。
什麼是集裝箱化?
容器化是將虛擬化引入操作系統級別的技術
它為操作系統帶來了抽象,也是一種虛擬化
容器化效率更高,因為這裡沒有客戶操作系統,並且利用主機的操作系統,在需要時共用相關的庫和資源,這與虛擬機不同。
特定於應用程式的二進位文件和容器庫在主機內核上運行,這使得處理和執行非常快。
它們比虛擬機輕巧且速度快。
什麼是Docker?
Docker是一個容器化平臺,它以Container的形式將您的應用程式及其所有依賴項打包在一起,以確保您的應用程式在任何環境中無縫運行。
每個應用程式都將在一個單獨的容器上運行,並擁有自己的一組庫和依賴項。
它還確保存在進程級隔離,這意味著每個應用程式都獨立於其他應用程式,從而使開發人員確信他們可以構建不會相互干擾的應用程式。
雖然Docker容器有時被稱為“輕量級VM”,但它們不是VM(虛擬機)。兩者都用於不同的目的,因此不能取代另一個。它們的底層架構是Docker與虛擬機的不同之處。雖然VM基於伺服器虛擬化技術,但Docker使用容器虛擬化。
讓我們看看Docker和虛擬機之間的主要區別是什麼
Docker和虛擬機之間的主要區別
OS支持
Docker容器和虛擬機的基本架構在操作系統支持方面有所不同。容器托管在具有主機操作系統的單個物理伺服器中,主機操作系統在它們之間共用。
另一方面,虛擬機在每個VM內部具有主機OS和單獨的客戶OS。無論主機操作系統如何,客戶操作系統都可以是任何東西 - Linux或Windows。
Docker容器適用於您希望在單個OS內核上運行多個應用程式的情況。但是,如果您的應用程式或服務需要在不同的OS風格上運行,則需要VM。
在容器之間共用主機操作系統使它們非常輕,並幫助它們在幾秒鐘內啟動。因此,與VM相比,管理容器系統的開銷非常低。
安全
在Docker中,由於主機內核在容器之間共用,因此容器技術可以訪問內核子系統。因此,單個易受攻擊的應用程式可以破解整個主機伺服器。
因此,出於安全原因,不建議在Docker容器中提供對應用程式的root訪問許可權並以超級用戶許可權運行它們。
另一方面,VM是具有自己的內核和安全功能的唯一實例。因此,它們可以運行需要更多特權和安全性的應用程式。
在Bobcares,我們在Docker中實施其他安全措施,如SELinux和AppArmor,以保護容器並防止它們相互破解或主機內核崩潰。
可移植性
Docker容器是可以運行所需應用程式的自包含容器。由於它們沒有單獨的客戶操作系統,因此可以輕鬆地跨不同平臺移植它們。
與VM相比,容器可以在幾秒鐘內啟動和停止,因為它們具有輕質結構。這使得在伺服器中快速部署Docker容器變得更加容易。
另一方面,VM是具有自己的OS的隔離伺服器實例。它們不能跨多個平臺移植而不會引發相容性問題。
對於必須在不同平臺上開發和測試應用程式的開發目的,Docker容器因此是理想的選擇。
性能
Docker和虛擬機用於不同的目的,因此同等地衡量它們的性能是不公平的。但是它們的輕量級架構使得Docker容器比虛擬機的資源密集程度更低。
因此,與VM相比,容器可以非常快地啟動,因為後者必須載入整個OS才能啟動。資源使用情況也因兩者而異。
在容器中,CPU,記憶體,I / O等資源使用情況因負載或流量而異。與VM的情況不同,不需要永久地將資源分配給容器。
與VM相比,擴展和複製容器也是一項簡單的任務,因為不需要在其中安裝操作系統。