天天看點

Docker 2--Docker概述與架構介紹

大家好,我是神韻,是一個技術&生活部落客。出文章目的主要是兩個,一是好記憶不如爛筆頭,記錄總結中提高自己。二是希望我的文章可以幫到大家。歡迎來點贊打卡,你們的行動将是我無限的動力。

本篇主題是:Docker概述與架構介紹

Docker 概述與架構

本文翻譯于docker官方文檔

https://docs.docker.com/get-started/overview/

Docker架構

  Docker使用 client-server/用戶端-伺服器端 架構。

  Docker用戶端與Docker守護程序對話,後者負責建構、運作和分發Docker容器。Docker用戶端和守護程序可以運作在同一個系統上,或者你可以将一個Docker用戶端連接配接到一個遠端Docker守護程序。Docker用戶端和守護程序使用REST API通過UNIX套接字或網絡接口進行通信。另一個Docker用戶端是Docker Compose,它允許您使用由一組容器組成的應用程式。

架構圖

Docker 2--Docker概述與架構介紹

關鍵名詞:Client用戶端、Docker daemon守護程序、Containers容器、Images鏡像和Registry鏡像倉庫。

1、Docker daemon
  Docker守護程序(簡稱dockerd),監聽DockerAPI請求,管理Docker對象,如鏡像、容器、網絡和卷。一個守護程序也可以與其他守護程序通信來管理Docker服務。

ps:可以将它了解成網關。

2、Docker Client
  Docker用戶端(簡稱docker)是許多Docker使用者與Docker互動的主要方式。當您使用諸如docker run之類的指令時,用戶端将這些指令發送給dockerd,由dockerd執行這些指令。docker指令使用docker API。Docker用戶端可以與多個dockerd守護程序通信。

ps:可以将它了解成浏覽器/指令行CLI。

3、Docker Registry

  Docker系統資料庫存儲Docker鏡像。Docker Hub是一個任何人都可以使用的公共系統資料庫,Docker預設配置為在Docker Hub上查找鏡像。你甚至可以運作自己的私有系統資料庫。

  當你使用docker pull或docker run指令時,将從配置的系統資料庫中提取所需的鏡像。

  當您使用docker push指令時,您的鏡像将被推送到已配置的系統資料庫中。

ps:可以把它了解成Maven的中央倉庫。

4、Docker objects

  當您使用Docker時,您正在建立和使用映像、容器、網絡、卷、插件和其他對象。下面簡要介紹其中一些重要的對象。
4.1、Images

  鏡像是一個隻讀模闆,包含建立Docker容器的說明。通常,一個鏡像基于另一個鏡像,并進行一些額外的定制。例如,您可以建構一個基于ubuntu鏡像的鏡像,但是鏡像可以帶安裝Apache web伺服器和你的應用程式,以及使你的應用程式運作所需的配置細節。

  你可以建立自己的鏡像,也可以隻使用其他人建立的并在系統資料庫中釋出的鏡像。要建構自己的鏡像,需要使用簡單的文法建立一個Dockerfile,用于定義建立鏡像和運作鏡像所需的步驟。Dockerfile中的每條指令在鏡像中建立一個層。當您更改Dockerfile并重新建構鏡像時,隻會重新建構那些已更改的層。與其他虛拟化技術相比,這是使鏡像如此輕量級、小型和快速的部分原因。

ps:你可以把鏡像了解成一個軟體安裝包

4.2、Containers
  容器是鏡像的可運作執行個體。你可以使用Docker API或CLI建立、啟動、停止、移動或删除容器。你可以将容器連接配接到一個或多個網絡,為其附加存儲,甚至根據其目前狀态建立新鏡像。 預設情況下,容器與其他容器及其主機相對隔離。你可以控制容器的網絡、存儲或其他底層子系統與其他容器或主機的隔離程度。 容器是由它的鏡像以及你提供給它的任何配置選項定義的。

ps:你可以把它了解成一個已經安裝好的軟體。

總結:

  我們通過Client去執行拉取的docker API指令,Docker daemon 監聽到拉取的docker API指令,會發送指令去Registry(預設DockerHub)拉取對應的Images,響應後指令結束。Client執行運作一個Images,就會得到一個Container,Containner就可以啟動并使用了。

大白話說:

  我們在指令行CLI(Client)中執行pull下載下傳軟體包指令,這個指令會通過網關(Docker daemon)發送到中央倉庫(Registry),從中央倉庫下載下傳一個軟體包(images)到Docker本地,然後安裝(run)這個軟體包得到一個安裝好的軟體(Container),點開(start)軟體啟動就可以使用了。

本文結束!