Docker 容器(Container)與虛擬機 (VM) 實現跨環境的快速、一致性部署
Docker 是一個開放原始碼的平台,能將應用程式及其所有相依性(程式碼、函式庫、工具)打包成標準化的「容器」
實現跨環境的快速、一致性部署;它透過與主機共用作業系統核心,提供比傳統虛擬機器更輕量、高效的隔離環境
讓開發者可專注於開發,輕鬆在任何地方運行應用程式。

Docker 的核心概念:
容器 (Container): 包含應用程式及其執行所需一切的獨立可執行單元。
映像檔 (Image): 容器的藍圖,是唯讀的模板,包含了應用程式的程式碼、環境變數、設定等。
Dockerfile: 用來定義如何建構 Docker 映像檔的腳本文件。
Docker Engine: Docker 的核心,負責管理容器的建立、運行和生命週期。
Docker 的主要優勢:
可攜性與一致性: 確保應用程式在開發、測試、生產等任何環境中都能以相同方式運行。
快速部署: 容器啟動快速,加速軟體交付與部署流程。
資源效率: 比虛擬機器更輕量,共享主機核心,節省資源。
環境隔離: 透過 Linux 核心特性 (namespaces, cgroups) 提供應用程式之間的隔離。
應用場景:
應用程式開發與測試: 為每個專案提供獨立、一致的開發環境。
CI/CD: 自動化軟體建構、測試與部署流程。
微服務架構: 將大型應用分解成小型、獨立的容器服務。
與虛擬機 (VM) 的比較:
Docker 容器: OS 層虛擬化,共享主機 OS 核心,輕量高效。
VM: 硬體層虛擬化,每個 VM 都有自己的完整 OS,資源消耗大。

虛擬機 (VM,Virtual Machine)
虛擬機 (VM,Virtual Machine) 是一種在實體電腦上透過軟體模擬出的獨立、隔離的計算環境
能像真實電腦一樣擁有自己的 CPU、記憶體、儲存和作業系統,並可同時運行
例如在 Windows 主機裡運行 Linux。
它利用虛擬化技術,讓一個物理主機可以運行多個 VM,實現資源共享、隔離測試、不同系統共存等功能,是雲端運算和軟體開發的重要基礎。

虛擬機的特點:
虛擬硬體:它模擬了 CPU、RAM、硬碟、網路等硬體資源。
獨立作業系統:每個 VM 都有自己的作業系統(如 Windows, Linux, macOS),互不干擾。
隔離性: VM 內的軟體和操作不會影響主機或其他 VM。
可攜性: VM 是一個檔案,易於複製、移動和備份。
虛擬機的運作方式:
Host (主機):你實際擁有的物理電腦或伺服器。
Hypervisor (虛擬機器監視器):一種管理軟體(如 VMware, VirtualBox, Hyper-V),它負責分配主機的資源給各個 VM。
Guest OS (訪客作業系統):安裝在虛擬機內的作業系統。

主要用途:
軟體開發與測試:在同一台電腦上測試不同系統的應用程式。
雲端運算:雲端服務商(如 AWS, Google Cloud)透過虛擬化提供資源給不同客戶。
資源整合:一台伺服器可運行多個 VM,降低硬體成本。
安全隔離:在隔離環境中運行有風險的程式。