# 虛擬化技術

虛擬化要解決的問題是:「當我寫了一個程式,在我電腦上可以執行,但在別人電腦上就不行」。

# But why?

  • 作業系統不同
  • 硬體配置不同

簡單來說:我的程式可能剛好只跟我的電腦的環境相容。😢

# 何謂虛擬化技術?

而虛擬化要做的就是模擬出一個環境,讓程式可以在不同硬體或作業系統上執行時,都以為自己在同一個環境中執行,以此來避免前面所述的問題。

目前常見用來比較的虛擬化技術有兩種:

  • 在系統層級的虛擬化技術,稱虛擬機器(Virtual machine)
    例如 : Virtual Box 。
    Virtual Box

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

# 虛擬機器

以作業系統為中心

傳統虛擬化的目標: 將一個應用程式所需的執行環境打包起來,建立一個獨立環境,方便在不同的硬體中移動。

虛擬機器是在系統層上虛擬化,
簡單來說, Virtual Box 就是一個可以讓你在作業系統(Host OS)上面再裝一個作業系統(Guest OS),然後讓兩個作業系統彼此不會打架的平台。

# 容器

以應用程式為中心

容器化的目標: 改善虛擬機器因為需要裝 Guest OS 導致啟動慢、佔較大記憶體的問題。

容器是在作業系統層上虛擬化,
透過 Container Manager 直接將一個應用程式所需的程式碼、函式庫打包,
建立資源控管機制隔離各個容器,並分配 Host OS 上的系統資源。
透過容器,應用程式不需要再另外安裝作業系統(Guest OS)也可以執行。

# VM vs. CONTAINER