iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 2
1
自我挑戰組

Cloud/SDN/SFC...菜鳥的學習筆記系列 第 2

Day2 淺談Docker-虛擬機器和容器的差別

Container與VM的差別

相信很多人在翻網路文章的時候,一定很常看到這兩者的比較,也許有點廢話,但是想要知道何時使用VM何時使用Container就多少要知道這兩者的差別,今天部分主要是整理一些雙方的優缺點,可以去思考哪時候用哪一種會比較好。

docker的Container與VM的架構比較
圖片擷取來源
ps:Hypervisor是用來建立與管理VM的運作。


VM的好處

  • 安全性較高,因為硬體層以上都虛擬化,因此安全性會相對較高。
  • 系統的選擇較多,在VM可以選擇各種不同的OS。
  • 應用程式不須要被拆分,因此不需要大幅更改應用程式的架構。簡單來說不需要降低應用程式內服務的耦合性,不需要將程式內的服務個別拆開來部屬。

VM的缺點

  • VM的Image大小通常為GB以上,較Container大。
  • 啟動速度通常要花個幾分鐘,因此服務重啟的速度較慢。
  • 資源使用較多,因為不只給應用程式本身,還要將一部分資源分給VM的作業系統。

Container的好處

  • Image較小,通常幾MB。
  • 啟動速度較快,通常幾秒就能生成一個Container。
  • 因為免去了去在執行一個OS的資源。所以能將更多資源運用在跑服務上。
  • 更新較為容易,只需要利用新的Image重新啟動就會更新了。

Container的缺點

  • 安全性較VM差,因為環境和硬體都是與本機共用。
  • 在同一台機器中,每個Container的OS都是相同,例如無法一個為windows一個為Linux,還是依賴Host OS。
  • Container通常切分成微服務(Microservices)的方式做部署,在各元件中的網路連結會比較複雜。

Container與VM的比較

  1. Container是以應用程式為單位,而VM是以作業系統為單位。
  2. Container依賴Host OS的核心(kernel)來運行Container,因此Windows的Container必須在Windows OS上運行;Linux的Container必須在Linux-base OS上運行。而VM則可以隨意選擇。
  3. Container是一個封裝了相依性資源與應用程式的執行環境;VM則是一個配置好CPU、RAM與Storage的作業系統。
  4. Container間是彼此隔離的,因此在同一台機器我們可以執行不同的版本的服務,但是VM則會因版本不同造成環境的衝突。
  5. Container因為是以程式為單位,需要的硬體資源更少,VM則會先佔用CPU、RAM等等硬體資源,不管有沒有要用都會先佔用。
  6. VM使用較大型的服務、而Container多使用於微服務中。

就我而言,Container我會使用一些耦合性比較低的專案去做使用,而VM則是大型專案去做使用,例如VM會架設一個線上商城的網站服務,有購買、註冊、登入、購物列表等等許多功能,而Container我會拿去架設一些像是Jenkins這種各種功能的相連性不高的服務。


上一篇
Day 1 菜鳥筆記的序言
下一篇
Day3 淺談Docker-docker安裝
系列文
Cloud/SDN/SFC...菜鳥的學習筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
begoniasuccess
iT邦新手 5 級 ‧ 2024-03-13 20:46:06

寫得很清楚 謝謝分享

我要留言

立即登入留言