Alan Zeichick | 資深撰稿人 | 2025 年 12 月 8 日
軟體開發早就不再侷限於「這在我的電腦上跑得好好的」!這多半要感謝容器化,讓應用程式能夠在內部部署和多部雲端伺服器中順暢執行,並視需要透過隔離且一致的環境來移動和擴展。
Docker 是開放原始碼的標準軟體平台,可協助開發人員快速建置、測試及部署容器化應用程式。難怪 Docker 及相關的容器服務在過去幾年受到廣泛採用。Docker 在 2013 年從鮮為人知且偏向技術性的開放原始碼技術為起點不斷演進,目前已演變成許多企業產品正式支援的標準化執行時期環境。
如之前所述,我們已經走了很長一段路。
Docker 是開放原始碼平台,可讓開發人員和系統管理員將應用程式封裝到容器中。然後這些容器可推送至部署平台,例如內部部署伺服器或雲端的伺服器,然後直接執行。您可以在單一伺服器上執行多個 Docker 容器,每個容器都有自己的應用程式,而這些應用程式會彼此隔離,以提供資料安全性和可靠性。
在任何相容伺服器上都能執行 Docker 容器的靈活性,是這項技術最大的一項優勢。Docker 最初是由目光遠大的軟體工程師 Solomon Hykes 提出,他在 PyCon 2013 會議中介紹了這項概念。除了專屬團隊之外,Hykes 也致力解決將應用系統部署至伺服器的挑戰,這項工作通常涉及大量資源、繁瑣且容易出錯的流程。Docker 旨在簡化和最佳化整段應用程式生命週期。
目前 Docker 容器用於涉及數千個容器和數百部伺服器的關鍵業務大規模部署。Docker 以容器化的基本概念為基礎,帶來創新的全新應用程式部署方法。Docker 引入一組強大的功能,將容器化提升到新高度。
Linux 容器自 2008 年以來就獲得採用,但 2013 年 Docker 容器出現後,則使運用範圍更廣。容器的主要優點是可容納執行應用程式或特定服務所需的一切元件,包括所有程式庫、圖形 (例如圖示) 或使用者介面元件、系統工具,以及程式執行時期可執行檔。Docker 容器的設計可在特定作業系統 (例如 Linux 或 Windows) 上執行。Docker 容器通常可以部署到執行該作業系統的任一伺服器 (或筆記型電腦或桌上型電腦),無須進行任何組態變更。
Docker 生態系統涉及建立容器、將所有應用程式部分放入這些容器中,並將進行封裝以便部署。如果只有少數容器,這種做法很適合,但如果有數百或數千個呢?Kubernetes 自動化平台在這裡可以派上用場。
Kubernetes 就像 Docker 一樣,是整個科技業廣泛支援的開放原始碼專案。您可以使用此工具來自動化部署 Docker 容器至伺服器、監控其效能、視需要啟動新容器、將容器更新為最新版本,以及在時間結束時將其關閉。
Kubernetes 的主要優點是可協助管理跨多部伺服器部署多個容器的作業複雜性,因此對任何大規模部署容器的技術 (不論是雲端或內部部署) 而言都非常重要。Kubernetes 會自動調度容器生命週期,將容器分散在代管基礎架構上。Kubernetes 會視需要快速上下擴展或縮減資源。
重點精華
Docker 是一個開放式的應用程式開發架構,專為開發人員和管理員而設計。這項技術採用 DevOps 模型,不遵循開發人員建立程式碼的傳統方法,而是由開發人員負責管理雲端應用程式,並將其「丟給」接著部署和管理應用程式的個別管理團隊。
只要使用 Docker,開發人員就能輕易在任何系統上建立、包裝、運送和執行應用系統,這些資料幾乎都是輕量型、可攜式、可自給自足的容器。現在,開發人員可以專注確保應用程式符合組織的需求,不必擔心基礎作業系統或部署系統。
此外,開發人員可從成千上萬個能在 Docker 環境中執行的開源容器化應用程式中選擇。Docker 致力為 DevOps 團隊持續整合與開發工具鏈,並降低系統架構限制和複雜性。有了 Docker 和容器調度雲端服務 (例如 Kubernetes),任何開發人員都可以在本機建立容器化應用程式,然後在雲端服務的生產環境中執行這些應用程式。
Docker 容器讓更多人得以參與開發工作:軟體產業中的個人通常會因為專業領域 (前端、後端) 或任何集中情況而將開發人員分開。熟悉基本概念的任何人都可以使用 Docker 建立、部署及管理容器。相較於將軟體直接安裝到伺服器的傳統方法,Docker 的容器化服務提供許多額外的優點。
這些優點包括:
Docker 的核心概念是映像檔和容器。Docker 映像檔包含執行軟體所需的一切元件,包括執行檔程式碼、驅動程式、工具、命令檔、程式庫、部署等等。
Docker 容器是 Docker 映像檔的執行中執行處理。不過 Docker 容器與傳統虛擬機器不同,會在主機作業系統的核心上執行,因此映像檔不會包含個別的作業系統。雖然這讓容器輕量且可攜,但也需要為特定作業系統設定容器。如果 Docker 容器存放已寫入並編譯至目標 Linux 的應用程式,只能在以 Linux 為基礎的伺服器上執行,已寫入並編譯至目標 Windows 的應用程式也是同理。
每個 Docker 容器都有自己的檔案系統、自己的網路堆疊及自己的 IP 位址、自己的處理作業空間,以及針對 CPU 和記憶體定義的資源限制。由於 Docker 容器不需要啟動作業系統就能運作,因此會立即啟動。Docker 會彼此隔離,將主機作業系統的資源與應用程式分開。因此可以在單一伺服器上執行許多容器,每個容器彼此安全地分隔,但共用基礎作業系統和硬體。
Docker 生產系統的架構需要 Docker 常駐程式、Docker 用戶端、容器映像檔和登錄,以及容器調度與管理。這些工作負載可以在雲端或內部部署環境中執行。
傳統虛擬機器 (VM) 與容器之間的差異極大。VM 是伺服器 (或任何電腦) 的完整軟體模擬,包括作業系統、裝置驅動程式、應用程式及資料。在 VM 設定中,Hypervisor 會在伺服器上執行並調度虛擬機器,執行與 Docker Engine 在容器中執行的相同功能。
相反地,容器只保存應用程式和資料,並使用主機電腦作業系統和裝置驅動程式。
VM 是用來執行多個作業系統,並在單一實體機器上提供安全、隔離的應用程式環境。雖然 VM 提供某些優勢,但也有以下限制:
另一方面,容器提供用於執行應用程式的隔離環境,同時也會共用主機作業系統核心,無須在每個容器內安裝完整的作業系統。這個共用的核心架構有多種優點:
在傳統部署中,軟體會載入伺服器,或設定作業系統、裝置驅動程式、應用程式及資料的虛擬機器上。這個緩慢的流程最適合用於通常在專用伺服器 (雲端或資料中心) 上執行的大型單體式應用系統。
相反地,容器提供一種輕量的方式,將應用程式及其所有相依性封裝成映像檔。接著,該映像檔會儲存在儲存區域中,只要幾秒鐘即可在目標伺服器上擷取並執行該映像檔。Docker 容器模型在使用自動化工具時更容易擴展,而且符合成本效益,可讓開發人員將伺服器的功能發揮到極致。
Docker 的核心概念是先前描述的圖片和容器。以下是 Docker 容器系統的其他元件:
Docker 容器化具備多功能性和強大功能,因此成為各產業組織的最佳選擇。以下是 Docker 最常見的用途,通常與 Kubernetes 搭配使用:
如果是剛接觸 Docker 和容器的人員,可參考以下逐步指南開始使用:
當您探索如何在組織內使用 Docker 時,請考慮許多採用雲端原生開發的公司所遵循的最佳實務:
Oracle 提供建立和部署雲端原生應用程式 (包括工具、服務和自動化) 所需的一切,讓開發團隊能夠快速建置,同時減少營運任務。
Oracle 雲端原生服務在 Oracle Cloud Infrastructure (OCI) 上執行,相較於許多其他雲端供應商,能提供更高效能且更低成本的標準型平台。OCI 利用基於開放原始碼和開放標準 (例如 Docker 和 Kubernetes) 的服務,可讓開發人員在任何雲端或內部部署環境中執行應用程式。
過去幾年來,Docker 和相關技術 (包括 Kubernetes) 獲得廣泛的採用和巨大的成功。Docker 在 2013 年從鮮為人知且偏向技術性的開放原始碼技術為起點不斷演進,已演變成經實證適合最大規模企業部署的標準化執行時期環境。
Docker 在目前是模組化雲端原生軟體的重要元件,可提供可擴充性、韌性、靈活性並節省成本。瞭解如何開始使用。
什麼是容器?
容器會將應用程式的所有程式碼與相依性都以標準格式組合,讓應用程式能夠在大多數伺服器上快速可靠地執行。Docker 是容器的業界標準開源格式。
為什麼要使用 Docker 而非傳統的部署方法?
原本管理員必須將應用程式的檔案 (包括可執行二進位檔案、程式庫及資料) 安裝到伺服器上,然後設定所有項目以正確運作。若要在伺服器上同時安裝和執行多個應用程式以充分提高硬體使用率,管理員需要確保這些應用程式不會彼此干擾,某個應用程式失敗不會導致其他應用程式當機。保守地說,這可能會非常複雜,而且很難自動化處理。
但若建立一個存放應用程式的容器,表示容器也具有可執行二進位檔案、程式庫和資料,而且一切都已預先設定好。這時若要執行應用程式,只需將容器複製到伺服器,Docker Engine 和 Docker 協助程式就會處理其餘作業。此外容器會被隔離,因此如果某個應用程式失敗,也不會影響在其他容器中執行的應用程式。Kubernetes 等工具也可以大規模自動部署和管理容器化應用程式。
Docker 是否可以完全取代虛擬機器?
您可將 Docker 和虛擬機器視為互補的技術。容器使用主機電腦的作業系統和裝置驅動程式。因此容器快速又有效率,而且在多數情況下通常更具吸引力。
但在某些情況下,虛擬機器是更好的選擇。這些情況包括在專用作業系統中執行應用程式但不共用其任何資源、需使用特殊裝置驅動程式,或在相同伺服器上執行多個作業系統。
Docker 如何與 Kubernetes 整合?
Kubernetes 是管理 Docker 容器的開放原始碼系統。這個系統會部署、啟動和停止容器,視需要使用多個執行處理以進行擴展,甚至在應用程式失敗或停止回應時重新啟動容器。Docker Compose 是基本 Docker 系統的一部分,可處理小型容器部署,而 Kubernetes 則適合用來擴展至數十、數百甚至數千個容器。
Docker 在企業雲端策略中扮演何種角色?
Docker 容器非常適合用於在雲端部署軟體。這可能是在單一容器內執行的傳統應用程式,或由數十個在自己的容器中執行的個別服務組成的微服務型雲端原生應用程式。容器可以簡化雲端服務開發和部署,並提升企業應用程式的可擴充性、安全性、法規遵循程度、測試和可用性。Docker 和 Kubernetes 甚至可以充分利用雲端伺服器,從而降低執行時期成本。