# 專題筆記: VM 與 Docker ###### tags: `專題` ( 09/22 - 09/28, 2022 ) <!-- -------------------------------------------------- --> VM (虛擬機器) --- ### VM 是什麼 用來建立虛擬化運算環境的技術(OS層級虛擬化),也是第一代雲端運算的基礎。 ### VM 的用途 - 試用新的作業系統。 - 建置應用程式並將其部署到雲端。 - 啟動新的環境,讓開發人員能夠更輕鬆快速地執行開發/測試案例。 虛擬機器無法與實體電腦直接互動,而是需要藉助一個叫做虛擬機器監視器(Hypervisor)的輕量型軟體層,在虛擬機器和底層的實體硬體之間進行協調。 註解: - Hypervisor 負責將實體運算資源(例如處理器、記憶體、儲存設備)配置給每個虛擬機器 - Host OS 是電腦上的OS - Guest OS 是指安裝在VM的OS ### 架構圖  ### 參考網址 [虛擬機器 (VM)](https://www.ibm.com/tw-zh/cloud/learn/virtual-machines) [什麼是虛擬機器 (VM)?](https://azure.microsoft.com/zh-tw/resources/cloud-computing-dictionary/what-is-a-virtual-machine/#overview) <!-- -------------------------------------------------- --> Docker --- ### Docker 是什麼 Docker 是個管理容器的服務,提供應用層級虛擬化技術。容器不像虛擬機要在Host OS上再安裝Guest OS,而可以直接共用底層Host OS 的資源,同時具備其應用程式沙盒的隔離性。 ### Docker 的概念 - Dockerfile 像是自動化腳本,用來創建鏡像,就像在虛擬機安裝作業系統跟軟體,只不過變成自動執行。 - Image / 鏡像 包含要部屬的應用程式以及有關聯的所有函示庫,通過鏡像,可以建立容器。 - Container / 容器 Docker利用容器來執行應用程式,可以被啟動、開始、停止、刪除,而每個容器都是相互隔離、保證安全的平台。 - Repository / 倉庫 集中存放映像檔檔案的場所,分為公開和私有兩種形式。 ### Docker 的用途 - 確保執行環境一致 避免開發、測試、生產環境不一致,導致「在我機器上正常啊」之類的問題 - 應用搬遷、維護、擴展更容易 搬遷:構建一次image,可正常執行於任意平台 維護:image分層儲存技術,使image可以基於其他image,應用程式間相同的部分得以複用 假設我們在個人電腦寫了一個WEB,想要在伺服器上執行,那兩者必須使用相同的軟體(像是資料庫、服務器、函式庫),為了模擬相同的開發環境,我們使用Docker來執行。以執行應用程式來說,虛擬機器需要模擬出整套作業系統才能執行應用程式,而容器則是直接運行在宿主機上,而宿主機也可以是虛擬機器。比虛擬機器又更為輕量級、執行啟動又更快。 ### 架構圖  ### 參考網址 [Docker 教學-1 架構及指令](https://mga8326.blogspot.com/2019/05/docker-1.html) [Docker 基本概念](https://tw.coderbridge.com/series/fa1b91903cf2495abd0034c823387a62/posts/0e37cfaab7c149bcbc0ed8df8b6cff67) <!-- -------------------------------------------------- --> Container 與 VM 的差別 --- - VM使用較大型的服務、而Container多使用於微服務中。 - Container彼此隔離,在同一台機器可以執行不同版本的服務,但VM會因版本不同造成環境衝突。 - VM - 優點: 安全性較高,因為硬體層以上都虛擬化 可以選擇各種不同的OS - 缺點: Image大小通常為GB 啟動速度通常要花個幾分鐘 資源使用較多,因為要將一部分資源分給VM的作業系統 - Container - 優點: Image大小通常為MB 啟動速度較快 能將更多資源運用在跑服務上 更新較為容易 - 缺點: 安全性較差 同一台機器中,每個Container的OS都是相同 ### 參考網址 [淺談Docker-虛擬機器和容器的差別](https://ithelp.ithome.com.tw/m/articles/10238498) <!-- -------------------------------------------------- -->
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.