Introduction
在現代軟體開發與部署中,「可攜性」 和 「一致性」 是兩個非常重要的目標。開發者經常遇到「在我的機器上可以運行,但在伺服器上出錯」的問題,而容器技術就是為了解決這個問題而誕生的。
什麼是容器(Container)?
容器是一種輕量級的虛擬化技術,它能夠將應用程式及其所有依賴環境(如函式庫、設定檔等)封裝 在一個獨立的可執行單元內,並確保該應用能夠在任何支援容器的環境中運行,而不受底層作業系統的影響。
容器技術的核心概念來自於 Linux 的命名空間(Namespace)和控制群組(Cgroups):
- Namespace:提供進程級的隔離,確保每個容器擁有獨立的檔案系統、網路、行程空間等。
- Cgroups:控制容器對 CPU、記憶體、磁碟等系統資源的使用,確保不同容器不會互相干擾。
容器 vs. 傳統虛擬機(VM)
許多人會將容器與虛擬機(Virtual Machine, VM)作比較,兩者雖然都能提供獨立的運行環境,但運作方式截然不同。