Container vs VM | container缺點
Container跟VirtualMachine的使用時機在網路上已經被討論了很久。每個人都有自己的看法和意見,有些人支持純Container,有些支持純VM,也有些支持ContaineronVM。本篇文章將以個人看法針對ContainervsVM做介紹跟其適用的使用時機做論述。ContainerContainer在這5年來快速竄紅,憑的是其輕量化和快速部署的彈性。與其虛擬化整個硬體,Container透過cgroups跟namespace將hostOS的資源做隔離,也有人稱之為OS的虛擬化。Container共用host上的kernel,只有其獨立的binary跟libraries,所以比起VM在image大小跟啟動速度都快的許多。Contain...
Container 跟 Virtual Machine 的使用時機在網路上已經被討論了很久。每個人都有自己的看法和意見,有些人支持純 Container,有些支持純 VM,也有些支持 Container on VM。本篇文章將以個人看法針對 Container vs VM 做介紹跟其適用的使用時機做論述。
ContainerContainer 在這 5 年來快速竄紅,憑的是其輕量化和快速部署的彈性。與其虛擬化整個硬體,Container 透過 cgroups 跟 namespace 將 host OS 的資源做隔離,也有人稱之為 OS 的虛擬化。 Container 共用 host 上的 kernel,只有其獨立的 binary 跟 libraries,所以比起 VM 在 image 大小跟啟動速度都快的許多。
Container 的優點:
Image 很小:因為跟 host 共用 kernel,只需要提供需要的 OS 元件跟 libraries。 速度:部署極快,通常花數秒就可以生成一個 container。 可攜性:在正確的 kernel 下 ,container 可以容易在不同 host 或環境中移動。 CI/CD:container 因其可攜性跟速度在 CI/CD 的建置相對 VM 來得容易。 週期管理:container 需要更新只需利用新的 image 重新啟動即可。需要解決的問題:
安全性:跟 host 共用 kernel,安全性比起虛擬化整個硬體來得差。 無法選擇 OS:同樣因為跟 host 共用 kernel 的關係,因此沒辦法在每個 container 都運行不同的 kernel。 需要比較複雜的網路:container 通常切分成 micro-service 的方式做部署,在各元件中的網路連結會比較複雜。 VMVM 相對 container 是比較老跟成熟的技術。VM 會虛擬化整個硬體層並在上面安裝 OS,使用起來比較像一台獨立的系統。
VM 的優點:
整個系統的虛擬化:這讓 VM 在使用上跟 baremetal server 沒有什麼差別,能夠比較直覺的操作。 不需要拆分應用程式:由於使用上跟 baremetal server 相同,可以不...