2.3 容器與虛擬機
在網路上搜尋什麼是容器,常常會看到網友們拿容器和虛擬機做比較,這兩項技術在達成的目的上是有相似之處,但在眾多相似之處,又有著些許的不同。
什麼是虛擬機?
理論上的說法是在電腦上透過一個叫做 Hypervisor 的軟體將作業系統和應用程式以及硬體分開來,這樣就可以將自己劃分為數個獨立的「虛擬機器」
白話一點的說法可以想像成一個管家 ( Hypervisor ) 幫你把一 個房子分隔成好幾間套房,每一個套房都有自己的衛浴設備和供電設施,誰也不求誰,但還是佔掉了整個房子的容積,水龍頭的流水量可能也會因為多條水管牽線而變得不那麼順暢。
虛擬機所佔據的硬體比較多,啟動速度也比較慢,是因為每個虛擬機器都可以獨立執行自己的作業系統和應用程式,同時還可以分配到從 Hypervisor 所管理的原始資源。這些資源包括記憶體、RAM、儲存設備等等,可以看看下方圖片:

什麼是容器?
在經過前兩個章節使用 Docker 容器後,相信使用上是有一些概念了,但到底什麼是容器呢?可以看到下方的圖片:

容器其實是一個抽象的應用層,把程式碼和相依套件打包再一起,多個容器可以在同一台機器上運作,並且和其他容器共享作業系統的核心 ( 這和虛擬機完全不相同 ),而虛擬機是每一個都有自己的作業系統的。
容器在 Linux 作業系統上作為獨立的執行程序,相比虛擬機器就能夠佔用更少的空間,又能夠處理更多的應用程式。