Docker 簡介:什麼是、架構、工作流
已發表: 2020-04-27目錄
虛擬化的歷史
不久前,部署服務是一個緩慢而痛苦的過程。 該過程涉及開發團隊編寫代碼,然後由運營團隊在金屬機器上進行部署。 運營團隊過去常常需要大量工作,因為他們必須尋找語言編譯器、庫和補丁才能使代碼正常工作。
如果流程有任何錯誤或錯誤,則必須重新開始——開發團隊將修復錯誤或錯誤,而運營團隊將再次開始部署代碼。
當 Hypervisor 被開發出來時,事情變得更好了。 那麼,什麼是管理程序? 這些是虛擬機 (VM) 的集合,它們可能會定期持續運行或關閉,尤其是在不使用時。 虛擬機在加速修復錯誤和部署代碼的過程中確實有所幫助,但它們仍然存在一些問題。 Docker 容器是真正的遊戲規則改變者。 他們甚至解決了虛擬機中存在的問題。
閱讀: Kubernetes 與。 Docker:主要區別
什麼是 Docker?
它是一個開源平台,全球開發人員使用它來運行、打包和分發應用程序。 Docker使應用程序的封裝從第一步到最後的過程非常簡單和高效。 要更好地了解 Docker,您必須了解容器是什麼以及它們是如何工作的。
容器不過是軟件一部分的獨立、輕量級和可執行包,它附帶運行它所需的一切。 容器絕不依賴於平台。 因此,Docker 與基於 Windows 和 Linux 的機器兼容。 此外,如果需要,您甚至可以在虛擬機上運行 Docker。 Docker 旨在實現的基本目標是讓開發人員使用分佈式架構來運行微服務應用程序。

與用於執行硬件抽象的虛擬機不同,Docker 升級並在操作系統級別執行不同資源集的抽象。 這提供了幾個好處,包括基礎設施的分離和應用程序的可移植性等。 換句話說,與用於抽象硬件服務器的虛擬機不同,Docker 基於容器的方法通過抽像操作系統內核來工作。 這是一個很好的虛擬化替代方案,可以更快地創建輕量級實例。 Docker 有兩個版本:
企業版 (EE):
此版本專為 IT 團隊和企業開發而設計。 此版本用於開發、發布和運行應用程序。
社區版 (CE):
此版本供正在探索基於容器的應用程序或開始使用 Docker 的個人和小型團隊使用。
閱讀:全棧項目理念和主題
碼頭工人工作流程
在本節中,我們將重點介紹 Docker 引擎及其不同的組件。 這將幫助我們在繼續 Docker 架構之前更好地了解 Docker 的工作原理。 Docker 引擎是使開發人員能夠使用這個基於容器的應用程序執行各種功能的力量。 您可以使用下面列出的組件來構建、打包、發布和運行應用程序。
1. Docker 守護進程
它是持續幫助您管理圖像、存儲卷、網絡和容器的後台進程。 它一直在尋找 Docker API 請求來處理它們。
2. 碼頭工人 CLI
它是一個與 Docker Daemon 交互的接口客戶端。 它可以幫助開發人員簡化管理容器實例的過程。 這是開發人員更喜歡 Docker 而不是其他類似應用程序的主要原因之一。

3. Docker引擎休息API
它促進了 Docker 守護進程和應用程序之間的交互。 通常需要 HTTP 客戶端才能訪問這些 API。
碼頭工人架構
Docker 架構是基於客戶端-服務器的架構。 它具有以下三個主要組件:
- Docker 主機
- 碼頭工人客戶端
- Docker 註冊表
- 泊塢窗對象
在初始階段,Docker 客戶端與守護進程交互,守護進程負責執行開發、運行和分發 Docker 容器的大部分工作。
Docker 守護程序和客戶端可以在單個系統上運行,或者開發人員可以使用遠程守護程序將其與本地 Docker 客戶端連接。 Rest API 用於在 Docker 守護進程和客戶端之間建立通信。 這可以通過網絡接口或 UNIX 套接字完成。
現在讓我們詳細討論 Docker 架構組件。
另請閱讀:為什麼要成為全棧開發人員?
1.Docker主機
Docker 主機負責運行 Docker 守護進程。 Docker Daemon 處理 API 請求,包括 docker build 和 docker run 等。 它還管理圖像、網絡、容器和其他 Docker 對象。 守護進程可以相互通信以管理不同的 Docker 服務。
2.Docker客戶端
它只不過是用戶用來與 Docker 交互的方法。 Docker 客戶端發送我們的請求,例如 docker run,Docker 構建到 Docker 守護進程。 Docker 客戶端的一個非常重要的特性是它可以與多個守護進程進行通信。
3. Docker 註冊表
註冊表是可擴展且無狀態的服務器端應用程序。 它不僅存儲 Docker 映像,還允許開發人員分發它們。 Docker 為我們提供了創建自己的鏡像的靈活性,或者我們可以使用公共註冊表。 這些註冊表包括Docker Cloud 和 Docker Hub等。
Docker 的配置是這樣的,它總是轉向 Docker Hub 和其他公共註冊表來查找圖像。 但是,我們可以選擇創建自己的註冊表。 因此,我們可以在 docker run 和 docker pull 命令的幫助下使用我們自己的註冊表提取所需的圖像。 Docker push 命令將所需的鏡像推送到我們創建的註冊表中。

4. Docker 對象
我們在使用 Docker 時使用並創建了幾個對象。 這些對象包括容器、圖像、插件、卷、網絡等。
5. Docker 鏡像
Docker 鏡像只不過是一個只讀模板,它為我們提供了創建容器所需的指令。 在許多情況下,一個圖像與另一個圖像有聯繫。 兩個圖像的區別在於增加的定制層。 換句話說,圖像也可以定義為容器的不可變快照。 圖像體積小、重量輕、速度快。
6. Docker 容器
讓我們按照不同的方法來理解 Docker 容器。 所以,如果一個圖像可以用來表示一個類,一個容器可以是它的實例。 換句話說,容器是一個運行時對象。 我們可以在 Docker CLI 或 API 的幫助下創建、啟動、移動、停止或刪除容器。 容器也可以附加到存儲並連接到一個或多個網絡。 根據容器的當前狀態,我們還可以創建一個新圖像。
結論
既然您知道 Docker 架構及其組件是什麼,那麼您就可以更好地了解其受歡迎程度的上升。 它簡化了基礎架構管理,並有助於使實例更快、更輕、更具彈性。
如果您有興趣了解有關全棧編碼的更多信息,請查看 upGrad 和 IIIT-B 的全棧軟件開發 PG 文憑,該文憑專為工作專業人士設計,提供 500 多個小時的嚴格培訓、9 個以上的項目和作業, IIIT-B 校友身份、實用的實踐頂點項目和頂級公司的工作協助。