Skip to main content

Docker 從何而來

起源​

每當企業需要一個新應用程序時,就必須購買一台新伺服器。不幸的是,我們不擅長預測新應用程序的性能需求,只能猜測未來可能的使用量。

這導致企業傾向購買非常昂貴的伺服器,性能遠超應用程序的需求。畢竟,沒有人希望伺服器性能不足,無法處理應用程序,從而導致客戶不滿和收入損失。因此,企業最終擁有許多性能過剩的伺服器。

直到虛擬化技術出現後,解決了這個問題。

Virtual Machine​

VMware 的出現,終於有了一種技術,允許我們在一個伺服器上安全地運行多個應用程式。

這是一個改變遊戲規則的技術。企業可以在現有伺服器的閒置資源上運行應用,這掀起了一個最大化現有資產價值的黃金時代。

  1. 特點
    • 每個虛擬機都有完整的 OS 和配置的硬體資源 (CPU, RAM)。
    • 每個虛擬機都相當於是獨立的作業系統。
  2. 缺點
    • 每個虛擬機都包含完整的系統,啟動的資源需要比較多,
    • 因為是完整的系統,所以啟動的速度也比較慢。
    • 每個虛擬機都需要定時監控和更新。

Container​

容器共享其運行的主機的 OS,這意味著單個主機可以運行更多的容器,同時每個容器並非獨立的作業系統,可以更高效的使用伺服器資源,啟動更快速。

  • Linux Container 現代容器技術始於 Linux,是眾多人多年來共同努力的成果。例如,Google 為 Linux 內核貢獻了許多與容器相關的技術。正是由於這些貢獻,我們才有了今天的容器。

info

注意:許多類似於容器的技術早於 Docker 和現代容器。然而,沒有任何一個像 Docker 一樣,讓使用容器變得很容易。

Docker​

Docker 是使 Linux Container 易於使用的工具。

Docker on Windows​

微軟的 WSL,透過內建 Linux 核心的方式,使得在 Windows 上面執行 Linux Container 變得很容易。
雖然 Windows 本身也有自己的容器技術 (Windows Container),但最主流的還是 Linux Container。

WebAssembly​

WebAssembly(Wasm) 是一種現代二進制指令集,用於構建比容器更小、更快、更安全、更便攜的應用程式。
可以用自己喜歡的程式語言建置,並將其編譯為 WASM binary,就可以在任何有 Wasm-Runtime 的地方執行。

warning

目前 WASM 還有許多限制,許多標準都還在開發訂製。
容器生態也比 WASM 生態更豐富、更成熟。

Reference​

https://leanpub.com/dockerdeepdive