基於示例理解Docker架構
Docker描述
Docker是一個開源的容器管理平臺,免費使用,並提供各種工具和實用程式來開發、測試和部署應用程式。您可以構建打包的、隔離的和平臺無關的容器,其中包含所有庫和依賴項。這將使建立和分發應用程式變得簡單。
Docker平臺
Docker平臺提供工具和實用程式,用於在稱為容器的隔離和容器化環境中打包、構建和執行軟體應用程式。Docker架構的安全性和隔離性使您可以做到這一點。
Docker包含許多用於管理容器生命週期的工具。
您可以在易於包含的預構建環境中構建您的應用程式。
您甚至可以將應用程式的不同元件部署到不同的容器中,並允許它們使用Docker網路進行通訊和資料交換。
該特定容器充當應用程式的獨立單元,用於測試和分發。
應用程式啟動並執行後,您可以使用該容器或作為編排的服務快速將其部署到生產環境。
無論您的主機是雲服務、虛擬機器、裸機伺服器還是Linux工作站,容器都提供相同服務。
Docker的工作流程
瞭解有效的持續整合構建的元件至關重要。為確保我們的開發和構建過程順利進行,請執行以下步驟:
Docker透過客戶端-伺服器架構執行其所有功能。Docker架構包含三個主要部分,如下所示:
- Docker守護程序(伺服器)
- REST API(Docker引擎)
- Docker CLI(客戶端)
這些元素共同實現客戶端和伺服器之間的通訊。您將分別觀察到這些。
容器守護程序
守護程序是一個持久的後端程序,它管理所有Docker物件,包括映象、容器、卷和網路。它監視Docker API以獲取包含指令的請求,處理這些請求並採取適當的操作。
RESTful Docker API
API充當伺服器和客戶端之間的中介。客戶端應用程式使用它與伺服器(守護程序)通訊。只有HTTP客戶端才能使用REST API。
Docker客戶端
Docker客戶端用於與Docker守護程序通訊。它可以像命令列介面一樣簡單。要構建和管理Docker物件,您可以直接從命令列(客戶端)向伺服器發出簡單的指令。
Docker架構
構成Docker架構的四個基本元件如下:
Docker守護程序或伺服器
Docker命令列介面或客戶端
Docker登錄檔
Docker物件:
映象
容器
網路
儲存
Docker守護程序
Docker守護程序,通常稱為“dockerd”,持續監聽Docker API請求。建立和管理Docker物件(如容器、卷、映象和網路)只是它用於執行的一些勞動密集型操作。同一主機或不同主機上的其他守護程序可以與Docker守護程序通訊。例如,在群集環境中,主機上的守護程序可以與其他節點上的守護程序協作以完成任務。
Docker CLI
Docker使用者可以使用簡單的HTTP客戶端(如命令列)與Docker通訊。當用戶執行Docker命令(如Docker run)時,CLI透過REST API將此請求傳送到dockerd。此外,Docker CLI支援多守護程序通訊。
Docker登錄檔
官方Docker登錄檔Dockerhub擁有多個官方映象倉庫。倉庫包含一組由Docker標籤區分的類似Docker映象。Dockerhub使用者可以訪問大量的官方和供應商特定的映象。其中一些是Nginx、Apache、Python、Java、Mongo、Node、MySQL、Ubuntu、Fedora、Centos等等。
您甚至可以使用Docker push命令在Dockerhub內部設定私有倉庫並存儲您自己的Docker映象。Docker允許您使用名為“registry”的映象在您自己的系統上構建您自己的私有Docker登錄檔。啟動與registry映象連線的容器後,您可以使用Docker push命令將映象推送到此私有登錄檔。
Docker物件
Docker使用者通常與Docker物件互動,例如映象、容器、卷、外掛、網路等等。您將在下面快速瞭解每個物件。
Docker映象 - Docker映象是由許多檔案層構建的只讀模板。Docker映象可以使用簡單的文字檔案Dockerfile建立,該檔案提供建立Docker映象的指令。第一個命令是FROM命令,它可以從任何Docker登錄檔檢索基本映象。然後使用幾個指令在生成此基本映象層後建立容器環境。每個指令都會在之前的指令之上建立一個額外的層。
Docker容器 - Docker容器是隔離的、封裝的、打包的和受保護的應用程式環境,其中包含執行應用程式所需的所有軟體包、庫和依賴項。例如,如果您使用Ubuntu映象構建容器,您將可以訪問隔離的Ubuntu環境。您還可以訪問Ubuntu環境的bash並從中發出命令。
網路 - 您可以設定一個安全的通道,以便群集中的所有隔離容器都可以通訊和共享資料或資訊。為此,您可以使用各種網路驅動程式和外掛。任何Docker網路群集的通訊都建立在Docker網路之上。Docker網路驅動程式主要分為五類:
主機驅動程式 - 如果您不需要Docker主機系統和網路上的容器之間進行任何網路隔離,請使用主機驅動程式。
橋接驅動程式 - 在同一主機系統上執行多個應用程式時,通常使用橋接網路驅動程式,它是預設網路驅動程式。
Overlay驅動程式 - 使用Docker swarm模式在同一網路上的不同主機上執行容器時,您可以使用overlay網路驅動程式。它允許在執行各種多容器應用程式元件的不同群集服務之間進行通訊。
Macvlan - macvlan驅動程式將mac地址分配給網路中的每個容器。因此,每個容器都可以充當獨立的物理主機。mac地址用於將流量引導到正確的容器。這在VM設定遷移等情況下非常有用。
無 - 只能使用None網路驅動程式關閉網路服務。
儲存 - 離開容器後,您在容器中擁有的任何資料和進度都會消失。需要永久性儲存解決方案來防止這種情況。為了通訊、儲存和備份您的重要資料,Docker提供了一些永續性儲存選項。這些包括:
卷 - 您可以使用主機計算機上的資料夾作為卷掛載到Docker容器內。這些位於主機機的檔案系統中,位於容器的寫時複製機制之外。您可以使用許多Docker命令來建立、管理、列出和刪除卷。
卷容器 - 您可以將卷掛載到另一個特定容器。
目錄掛載 - 可以將主機計算機上的本地目錄掛載到容器。對於卷,目錄必須位於主機機的卷資料夾內才能被掛載。相反,使用目錄掛載時,您可以快速將伺服器上的任何目錄作為源進行掛載。
儲存外掛 - 透過將它們與主機儲存對映,儲存外掛允許您連線到任何外部儲存平臺,例如陣列、裝置等。
結論
在本文中,您瞭解了Docker在容器化領域的重要性及其架構。您還了解了構成Docker架構的主要元件,例如Docker守護程序、Docker CLI和REST API。您還學習瞭如何透過使用Docker物件(包括映象、卷、網路和容器)充分利用容器化。
資料結構
網路
關係型資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP