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