3.1 Docker Engine
Docker Engine 是 Docker 的 "引擎",也就是實現容器運行的主要軟體。這個引擎提供了一個平台,用於在隔離的容器中開發、交付和執行應用程式。Docker Engine 包含幾個主要元件,這些元件確保了 Docker 的完整功能。
Docker Engine 包含三個主要部分:
- Docker Daemon: 伺服進程。它執行與容器相關的主要操作。
- Docker API: 一個介面,允許通過程式調用與 Docker Daemon 互動。
- Docker CLI: 命令行工具——用於操作 Docker 的介面。
Docker Engine 的角色:
Docker Engine 管理容器的生命週期,從建立和啟動到移除。它保證容器的隔離性,允許在同一主機上運行多個容器而不發生衝突。Docker Engine 使得在容器中運行複雜的應用程式和微服務成為可能,從而簡化了它們的開發、測試和部署
。
Docker Engine 的演進
自從問世以來,Docker Engine 經歷了多個版本和改進。每次更新都帶來了新的功能和性能改進。例如,添加了像 Docker Swarm 這樣的容器編排功能,它們允許管理容器集群並自動化應用程式的部署。
3.2 Docker Daemon
Docker Daemon 是核心的伺服程序,負責執行所有 Docker 的操作。它在背景中運行,負責管理容器、映像、網路和其他 Docker 資源。
Docker Daemon 的功能:
- 創建和管理容器:Docker Daemon 處理創建、啟動、停止和刪除容器的請求。它提供容器的隔離並在容器之間分配資源。
- 映像管理:Docker Daemon 下載和保存用於創建容器的映像。它還管理映像緩存以優化磁盤空間的使用。
- 網路管理:Docker Daemon 創建和管理 Docker 網路,使容器能夠相互交互以及與外部系統通信。它支持不同的網路驅動程式和設置以確保靈活性和安全性。
- 存儲管理:Docker Daemon 管理容器用於存儲數據的卷和其他存儲類型。它能確保容器內數據的可靠和高效管理。
Docker Daemon 的架構
Docker Daemon 使用的是客戶端-伺服器架構。客戶端 (CLI 或 API) 發送命令給 Docker Daemon,Daemon 負責處理並執行這些命令。Daemon 可以在各種操作系統上運行:Linux、MacOS 或 Windows。
安全性中的角色:
Docker Daemon 在確保容器安全性方面扮演著關鍵角色。它管理訪問權限、網路設置和容器隔離,從而限制潛在的威脅和漏洞。通過使用 namespaces(進程和資源隔離技術)和 cgroups(資源管理機制),Docker Daemon 對進程進行隔離並控制容器的資源使用,確保它們的安全運行。
3.3 Docker API
Docker API 是一種程式介面,開發者和系統管理員可以透過代碼來管理 Docker。它基於 RESTful (Representational State Transfer) 架構風格,通過標準的 HTTP 請求,如 GET、POST 和 DELETE 進行互動。這使得與容器相關的任務自動化以及 Docker 與其他系統和工具的整合變得相當容易。
Docker API 的功能:
- 容器管理: Docker API 允許創建、運行、停止和刪除容器,還可以獲取容器的狀態和日誌資訊。
- 影像操作: 使用 API 可以下載、創建、刪除和管理容器影像。
- 網路操作: API 支援創建和管理 Docker 網路,包括將容器連接到網路或從網路斷開。
- 存儲管理: API 提供了管理卷和其他存儲類型的功能,這些存儲是容器用於保存數據的。
Docker API 的使用:
Docker API 可以與多種程式設計語言和自動化工具一起使用,例如 Python、Go、Java 等。這使得開發、測試和部署容器化應用程式的過程能夠被編寫腳本和應用程式自動化。
Docker API 的使用例子:
- CI/CD: 自動化持續整合和部署流程,每次代碼更改時會自動創建新容器並測試它。
- 監控與日志記錄: 與監控和日志記錄系統的整合,用於追蹤容器的狀態並分析其性能。
- 編排: 使用 Docker Swarm 或 Kubernetes 管理容器集群,透過 Docker API 與單個節點和容器進行交互。
3.4 Docker CLI
Docker CLI (Command Line Interface) — 這是一個命令列界面,允許使用者與 Docker Daemon 互動並執行多種與容器相關的操作。Docker CLI 提供了一種方便且直觀的方式來透過終端管理 Docker。
Docker CLI 的基本命令:
Docker CLI 支援廣泛的命令集,這些命令能夠執行所有與容器、映像檔、網路以及存儲相關的基本操作。以下是一些命令的例子:
- docker run: 從映像檔啟動新容器。
- docker build: 從 Dockerfile 建立新映像檔。
- docker pull: 從 Docker Hub 或其他 registry 下載映像檔。
- docker push: 將本地映像檔上傳到 registry。
- docker ps: 查看正在執行的容器列表。
- docker stop: 停止正在執行的容器。
- docker rm: 刪除已停止的容器。
- docker network: 管理 Docker 的網路。
Docker CLI 的特點:
- 使用方便: Docker CLI 被設計成直觀且易於使用。命令結構簡單且邏輯清晰,對於新手來說也很容易上手。
- 腳本化與自動化: Docker CLI 允許建立腳本來自動化與容器相關的任務,這讓管理大型容器集群更加簡單,也可以讓 Docker 與其他工具和系統整合。
- 擴展性: Docker CLI 支援插件,允許擴展功能並加入新命令。這使得 Docker CLI 具有靈活性,可以適應各種需求和使用場景。
元件之間的互動:
Docker CLI 透過 Docker API 與 Docker Daemon 進行互動。當使用者在 Docker CLI 中輸入命令時,該命令會被發送到 Docker Daemon 處理並執行相應的操作,然後返回結果到 CLI。這樣的互動提供了一種強大且靈活的方式來管理容器及 Docker 資源。
Docker CLI 的使用範例:
- 開發: 開發者可以利用 Docker CLI 快速建立隔離的開發和測試環境,這讓切換不同版本的函式庫和框架變得更容易。
- 佈署: 管理員可以使用 Docker CLI 自動化應用程式的佈署到伺服器及雲端環境,確保過程的穩定性與可預測性。
- 除錯與監控: 透過 Docker CLI,可以方便地訪問容器日誌、檢查容器狀態並對應用程式進行除錯。

Docker Engine、Docker Daemon、Docker API 和 Docker CLI 是 Docker 生態系統中確保容器運行和管理的基本組件。Docker Engine 是系統的核心,包含 Docker Daemon 和 Docker API。Docker Daemon 負責執行所有有關建立及管理容器的操作,Docker API 提供與 Daemon 互動的程式接口,而 Docker CLI 則提供了一個方便的界面來執行各種命令。
GO TO FULL VERSION