容器技術是一項虛擬化技術,其主要目的在於簡化應用程序的部署、管理和運行。不同於傳統虛擬機器,容器化允許多個應用程式共享主機操作系統的核心(Kernel)。開發者可以將想要測試的應用程序以及相關依賴項(Dependency)封裝在容器中進行測試。容器與虛擬機器相比的主要優勢在於資源效能,因為container不需要模擬整個操作系統,所需資源相對較少。這也使開發者能夠更靈活地配置容器內的資源,因為每個容器都運行在獨立的環境中,互不影響。
容器化技術類似於虛擬機,但在概念上略有不同,其主要目的是為開發者提供測試應用程序的沙盒環境。
沙盒環境能確保容器內的應用程序在隔離環境中運行,避免相互干擾,保持獨立性。同時它還負責管理容器內的資源,包括虛擬文件系統、網絡配置和計算資源,以確保適當的資源分配。此外,提供容器額外的安全層,限制容器的權限,從而減少安全風險。最重要的是,容器確保應用程序能夠在不同作業環境核心中保持一致運行,實現應用程序的高度可移植性。
映像檔(Image):容器的基本模板,包含應用程式的代碼、依賴項(dependencies)、配置和運行環境。映像檔通常是唯讀的,並且可以用來創建多個相同配置的容器實例。
二進制檔案(Bins):可執行的應用程式或命令行工具,用來支援容器中應用程式運行所需的其他執行檔,由映像檔(Container Image)提供。。
函式庫 (Libs):用來支援容器中應用程式的共享程式庫,是應用程式及其相依性的一部分,由映像檔(Container Image)提供。
可讀寫層(Read and Write Layer):容器運行時的一個可讀寫層,稱為容器層(Container Layer)。在這個層上,應用程式可以進行修改和寫入操作,而不會影響映像檔本身。每個容器都有自己的可讀寫層,可以獨立運行和維護。
容器運行時環境:容器需要一個運行環境來執行應用程式,通常是容器管理器(Container Runtime)Docker是一個著名的容器管理器。
資源隔離:容器提供資源隔離,確保容器內的應用程式不會相互干擾,並且不會干擾主機系統或其他容器。這種隔離性是通過Linux內核的功能,如命名空間(Namespace)和控制組(cgroups)來實現的。