Docker 架構概述和 Docker 組件 [適合初學者]

已發表: 2020-12-31

如果您最近接觸過容器世界,那麼了解協同工作以提供容器化優勢的底層元素可能不是一個壞主意。 但在此之前,您可能會問一個問題。 容器解決了什麼問題?

在典型的開發生命週期中構建應用程序後,開發人員將其發送給測試人員進行測試。 但是,由於開發和測試環境不同,代碼無法正常工作。

現在,主要有兩種解決方案——要么使用虛擬機,要么使用容器化環境,例如 Docker。 在過去的美好時光中,組織過去常常部署虛擬機來運行多個應用程序。

那麼,為什麼他們開始採用容器化而不是虛擬機呢? 在本文中,我們將對所有此類問題進行詳細解釋。

在這個奇妙的工具背後,必須有同樣經過深思熟慮的架構。 在了解 Docker 架構組件之前,讓我們先了解一下 Docker 容器以及它們如何優於 VM。

目錄

碼頭集裝箱

Docker 是一個開源項目,它提供了在稱為容器的鬆散隔離和包含環境中創建、打包和運行應用程序的能力。

憑藉 Docker 平台提供的所有隔離和安全性,它允許您在特定主機上同時運行多個容器。

Docker 容器被廣泛採用的原因包括

  • 它允許開發人員在本地編寫代碼並使用容器與他們的團隊共享工作。
  • 他們可以將他們的應用程序推送到測試環境中,這些環境是容器並執行自動化測試。
  • 當發現錯誤時,可以在開發環境中修復它們,然後重新部署。
  • 獲得修復就像將更新的圖像推送到生產環境一樣簡單。

在深入探討該主題之前,我們必須將傳統的虛擬化實踐與新一代容器化區分開來。

虛擬機與 Docker 容器

在我們將容器化用於我們的 DevOps 實踐之前,虛擬機是最重要的。 我們曾經為每個應用程序創建虛擬機。

雖然虛擬機滿足了幾乎所有的需求,但使用虛擬機的缺點是很麻煩,並且從底層主機分配了所有需要的內存和硬件資源。

然而,容器化很容易避免這種情況,因為容器提供操作系統級別的虛擬化並且通常需要更少的內存。 因此,它變得流行並最終被 DevOps 社區採用。

圖片來源

上圖描述了虛擬機和容器的架構有何不同,以及為什麼容器現在在日常開發過程中已經超越虛擬機。 與虛擬機不同,容器位於容器引擎之上以提供操作系統級虛擬化,從而節省許多資源。

碼頭引擎

在討論 Docker 的不同架構組件之前,有必要了解 Docker 的工作流程。 讓我們看一下 Docker Engine 及其幾個部分,這將使我們了解 Docker 系統的工作原理。 Docker 引擎主要是一個典型的客戶端-服務器應用程序,具有三個主要組件。

服務器(守護進程)

Docker 守護進程是一個在後台運行並管理所有 Docker 對象的連續進程。 它監聽客戶端提出的 Docker API 請求並持續處理它們。

休息 API

它是 Docker 客戶端用來與 Docker 守護進程交互的接口。 客戶端可以通過 API 與守護進程對話,並向它提供指令。

客戶

Docker 客戶端是一個可以與守護進程交互的命令行界面 (CLI)。 它簡化了容器管理的整個過程。

圖片來源

Docker 客戶端(可以是 HTTP 客戶端,例如 CLI)與守護程序對話,守護程序執行創建、運行和共享容器的繁重任務。 客戶端和守護程序既可以在同一台機器上運行,也可以將客戶端連接到遠程守護程序。 客戶端和守護進程通過套接字或網絡接口使用 Rest API 相互通信。 Docker 客戶端幫助用戶管理 Docker 對象,例如容器、圖像、卷等。了解有關 Docker 項目的更多信息

報名參加世界頂尖大學的軟件開發課程獲得行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。

建築構件

如前所述,Docker 使用客戶端-服務器架構,客戶端通過 Rest API 與守護進程對話。 Docker 架構由幾個組件組成,如下所述。

圖片來源

守護進程

它監聽客戶端發起的 API 請求並管理 Docker 對象,包括容器、鏡像、捲和網絡。 它還可以與其他守護進程通信以管理 Docker 服務,尤其是管理大型 Docker 網絡。

客戶

Docker 用戶可以使用 Docker 客戶端與守護進程通信。 用戶使用諸如 CLI 之類的客戶端執行諸如“Docker run ...”之類的命令,然後將這些命令轉發給 Docker(守護進程),最終執行它們。 Docker 客戶端與多個守護進程通信。

登記處

它存儲 Docker 映像,可以是公共的或私有的。 Docker 配置為默認在 Docker Hub 上查找圖像。 當客戶端發出拉取或運行命令時,將從存儲庫中拉取圖像。

泊塢窗對象

在使用 Docker 時,我們與多個對象進行交互,例如容器、圖像、卷、網絡等。

其中一些對像是

圖片

它是一個只讀模板,包含創建容器的說明。 它還包含描述容器功能的元數據。 用戶可以從 Docker 註冊表中提取鏡像,並在它們之上創建可寫的鏡像層,以創建自定義鏡像以滿足其應用程序的需求。 一些流行的想法包括 Ubuntu、Nginx、MySQL 等。這些想法可以跨團隊共享,幫助他們在應用程序上協作工作。

容器

容器是為應用程序提供隔離環境的鏡像實例。 他們只能訪問由用於構建它們的圖像定義的資源。

網絡

Docker Networks 允許同一網絡上的隔離容器進行通信和共享資源。 Docker提供的一些網絡包括bridge、host、overlay、Macvlan等。

貯存

Docker 允許您在驅動程序的幫助下將數據存儲在可寫容器層中。 Docker 允許四種持久存儲選項——Docker 卷、卷容器、目錄掛載和存儲插件。

最廣泛使用的存儲選項是卷。 它們被放置在主機文件系統上,並允許多個容器在這些卷中共享和寫入數據。

結論

Docker 使用一組最先進的底層技術為其用戶提供高效的容器化服務。 毫無疑問,近年來,Docker 已經開始在開發者社區中獲得關注,並將在未來幾年繼續這樣做。

由於容器提供了廣泛的好處,例如資源效率、可擴展性等,它正確地確保了它在甲板上的位置。

在本文中,我們討論了 Docker 的一些最基本的概念,例如 Docker 工作流程、其架構和底層技術,以及容器、圖像、註冊表、網絡等幾個 Docker 對象。

您現在正步入正軌,深入了解 Docker 容器的美麗世界。 您現在應該更好地了解不同的 Docker 資源如何協同工作,為您提供一系列功能,讓您可以無縫地構建、部署和共享應用程序。

與 upGrad 一起學習 Docker 架構

使用 upGrad 加快您的應用程序構建之旅。

升級教育列兵。 Ltd. 正在提供 DevOps 軟件開發專業化的獨家課程,這使有抱負的人準備好被大型 IT 巨頭所吸引。

課程亮點

upGrad 的大數據軟件開發專業執行 PG 計劃是一門精心設計的在線課程,為期 12 個月。

在本課程中,您將

  • 獲得對數據科學和機器學習內容的獨家訪問權
  • 處理實時項目和任務
  • 獲得 360 度的職業支持
  • 學習十種編程語言和工具
  • 獲得專門的學生指導

使用 upGrad 讓自己的 DevOps 應用程序開發做好準備。

幹嘛要等

今天申請!

為未來的職業做準備

立即申請軟件工程碩士