專題
( 09/22 - 09/28, 2022 )用來建立虛擬化運算環境的技術(OS層級虛擬化),也是第一代雲端運算的基礎。
虛擬機器無法與實體電腦直接互動,而是需要藉助一個叫做虛擬機器監視器(Hypervisor)的輕量型軟體層,在虛擬機器和底層的實體硬體之間進行協調。
註解:
- Hypervisor 負責將實體運算資源(例如處理器、記憶體、儲存設備)配置給每個虛擬機器
- Host OS 是電腦上的OS
- Guest OS 是指安裝在VM的OS
Docker 是個管理容器的服務,提供應用層級虛擬化技術。容器不像虛擬機要在Host OS上再安裝Guest OS,而可以直接共用底層Host OS 的資源,同時具備其應用程式沙盒的隔離性。
Dockerfile
像是自動化腳本,用來創建鏡像,就像在虛擬機安裝作業系統跟軟體,只不過變成自動執行。
Image / 鏡像
包含要部屬的應用程式以及有關聯的所有函示庫,通過鏡像,可以建立容器。
Container / 容器
Docker利用容器來執行應用程式,可以被啟動、開始、停止、刪除,而每個容器都是相互隔離、保證安全的平台。
Repository / 倉庫
集中存放映像檔檔案的場所,分為公開和私有兩種形式。
確保執行環境一致
避免開發、測試、生產環境不一致,導致「在我機器上正常啊」之類的問題
應用搬遷、維護、擴展更容易
搬遷:構建一次image,可正常執行於任意平台
維護:image分層儲存技術,使image可以基於其他image,應用程式間相同的部分得以複用
假設我們在個人電腦寫了一個WEB,想要在伺服器上執行,那兩者必須使用相同的軟體(像是資料庫、服務器、函式庫),為了模擬相同的開發環境,我們使用Docker來執行。以執行應用程式來說,虛擬機器需要模擬出整套作業系統才能執行應用程式,而容器則是直接運行在宿主機上,而宿主機也可以是虛擬機器。比虛擬機器又更為輕量級、執行啟動又更快。
- VM使用較大型的服務、而Container多使用於微服務中。
- Container彼此隔離,在同一台機器可以執行不同版本的服務,但VM會因版本不同造成環境衝突。
VM
Container