Computer Science
虛擬化技術
On this page
虛擬化技術
虛擬化要解決的問題是:「當我寫了一個程式,在我電腦上可以執行,但在別人電腦上就不行」。
But why?
- 作業系統不同
- 硬體配置不同
簡單來說:我的程式可能剛好只跟我的電腦的環境相容。😢
何謂虛擬化技術?
而虛擬化要做的就是模擬出一個環境,讓程式可以在不同硬體或作業系統上執行時,都以為自己在同一個環境中執行,以此來避免前面所述的問題。
目前常見用來比較的虛擬化技術有兩種:
- 在系統層級的虛擬化技術,稱虛擬機器(Virtual machine) 例如 : Virtual Box 。

- 在作業系統層級技術,此稱容器(Container) 例如 : Docker 。

虛擬機器
以作業系統為中心
傳統虛擬化的目標: 將一個應用程式所需的執行環境打包起來,建立一個獨立環境,方便在不同的硬體中移動。
虛擬機器是在系統層上虛擬化,
簡單來說, Virtual Box 就是一個可以讓你在作業系統(Host OS)上面再裝一個作業系統(Guest OS),然後讓兩個作業系統彼此不會打架的平台。


容器
以應用程式為中心
容器化的目標: 改善虛擬機器因為需要裝 Guest OS 導致啟動慢、佔較大記憶體的問題。
容器是在作業系統層上虛擬化,
透過 Container Manager 直接將一個應用程式所需的程式碼、函式庫打包,
建立資源控管機制隔離各個容器,並分配 Host OS 上的系統資源。
透過容器,應用程式不需要再另外安裝作業系統(Guest OS)也可以執行。

VM vs. CONTAINER
