更新時間:2020-05-27 來源:黑馬程序員 瀏覽量:
了解了Docker內(nèi)部引擎及作用后,我們還需要通過Docker的具體架構(gòu),了解Docker的整個運(yùn)行流程。接下來借助Docker官網(wǎng)的架構(gòu)圖對Docker架構(gòu)進(jìn)行詳細(xì)說明,如下所示:
從上圖中可以看出,Docker架構(gòu)主要包括Client、DOCKER_HOST和Register三部分,關(guān)于這三部分的具體說明如下。
1. Client(客戶端)
Client即Docker客戶端,也就是上一小節(jié)Docker Engine中介紹的docker CLI。開發(fā)者通過這個客戶端使用Docker的相關(guān)指令與Docker守護(hù)進(jìn)程進(jìn)行交互,從而進(jìn)行Docker鏡像的創(chuàng)建、拉取和運(yùn)行等操作。
2. DOCKER_HOST(Docker主機(jī))
DOCKER_HOST即Docker內(nèi)部引擎運(yùn)行的主機(jī),主要指Docker daemon(Docker守護(hù)進(jìn)程)??梢酝ㄟ^Docker守護(hù)進(jìn)程與客戶端還有Docker的鏡像倉庫Registry進(jìn)行交互,從而管理Images(鏡像)和Containers(容器)等。
3. Registry(注冊中心)
Registry即Docker注冊中心,實(shí)質(zhì)就是Docker鏡像倉庫,默認(rèn)使用的是Docker官方遠(yuǎn)程注冊中心Docker Hub,也可以使用開發(fā)者搭建的本地倉庫。Registry中包含了大量的鏡像,這些鏡像可以是官網(wǎng)基礎(chǔ)鏡像,也可以是其他開發(fā)者上傳的鏡像。
我們在實(shí)際使用 Docker 時,除了會涉及圖中的 3 個主要部分外,還會涉及很多Docker Objects(Docker對象),例如Images(鏡像)、Containers(容器)、Networks(網(wǎng)絡(luò))、Volumes (數(shù)據(jù)卷)、Plugins(插件)等。其中常用的兩個對象Image和Containers的說明如下。
·Images(鏡像)
Docker鏡像就是一個只讀的模板,包含了一些創(chuàng)建Docker容器的操作指令。通常情況下,一個Docker鏡像是基于另一個基礎(chǔ)鏡像創(chuàng)建的,并且新創(chuàng)建的鏡像會額外包含一些功能配置。例如:開發(fā)者可以依賴于一個 Ubuntu 的基礎(chǔ)鏡像創(chuàng)建一個新鏡像,并可以在新鏡像中安裝Apache等軟件或其他應(yīng)用程序。
·Containers(容器)
Docker 容器屬于鏡像的一個可運(yùn)行實(shí)例(鏡像與容器的關(guān)系其實(shí)與 Java 中的類與對象相似),開發(fā)者可以通過API接口或者CLI命令行接口來創(chuàng)建、運(yùn)行、停止、移動、刪除一個容器,也可以將一個容器連接到一個或多個網(wǎng)絡(luò)中,將數(shù)據(jù)存儲與容器進(jìn)行關(guān)聯(lián)。