Docker工作原理-創(chuàng)新互聯(lián)

Docker架構的工作原理

對Docker不太熟悉的朋友可以參考博文:Docker簡介及安裝配置詳解
首先Docker是基于Go語言進行開發(fā)的,而且是基于C/S結構進行工作的,如圖:
Docker工作原理
從圖中可以看出:
(1)用戶是使用Docker Client與Docker Daemon建立通信,并發(fā)送請求給后者;
(2)Docker Daemon作為Docker架構中的主體部分,首先提供Server的功能使其可以接受Docker Client的請求;而后Engine(引擎)執(zhí)行Docker內部的一系列工作,每一項工作都是以一個Job的形式存在;
(3)Job的運行過程中,當需要容器鏡像時,則從Docker Registry(docker倉庫)中下載鏡像,并通過graphdriver(鏡像管理驅動)將下載鏡像以Graph(圖像)的形式存儲;當需要為Docker創(chuàng)建網(wǎng)絡環(huán)境時,通過networkdriver(網(wǎng)絡管理驅動)創(chuàng)建并配置Docker容器網(wǎng)絡環(huán)境;當需要限制Docker容器運行資源或執(zhí)行用戶指令等操作時,則通過execdriver(執(zhí)行管理驅動)來完成。
(4)libcontainer(容器庫)是一項獨立的容器管理包,networkdriver以及execdriver都是通過libcontainer來實現(xiàn)具體對容器進行的操作。當執(zhí)行完運行容器的命令后,一個實際的Docker容器就處于運行狀態(tài),該容器擁有獨立的文件系統(tǒng),獨立并且安全的運行環(huán)境等。

創(chuàng)新互聯(lián)建站于2013年成立,是專業(yè)互聯(lián)網(wǎng)技術服務公司,擁有項目網(wǎng)站設計制作、成都網(wǎng)站制作網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元綠園做網(wǎng)站,已為上家服務,為綠園各地企業(yè)和個人服務,聯(lián)系電話:18980820575

各個模塊的功能

(1)docker client

docker client是docker架構中用戶用來和docker daemon建立通信的客戶端,用戶可以通過docker命令行工具發(fā)起眾多管理docker container的請求。

docker client發(fā)送容器管理請求后,由docker daemon接受并處理請求,當docker client接收到返回的請求相應并簡單處理后,docker client一次完整的生命周期就已經結束了。

(2)docker daemon

docker daemon 是docker架構中一個常駐在后臺的系統(tǒng)進程,功能就是:接收處理docker client發(fā)送的請求。該守護進程在后臺啟動一個server,server負載接受docker client發(fā)送的請求;接受請求后,server通過路由與分發(fā)調度,找到相應的handler(處理器)來執(zhí)行請求。

(3)docker server

docker server在docker架構中是專門服務于docker client的server,該server的功能就是:接受并調度分發(fā)docker client發(fā)送的請求。

(4)engine

Engine是Docker架構中的運行引擎,同時也Docker運行的核心模塊。它扮演Docker container存儲倉庫的角色,并且通過執(zhí)行job的方式來操縱管理這些容器。

(5)job

一個Job可以認為是Docker架構中Engine內部最基本的工作執(zhí)行單元,Docker可以做的每一項工作,都可以抽象為一個job。

(6)docker registry

Docker Registry是一個存儲容器鏡像的倉庫。而容器鏡像是在容器被創(chuàng)建時,被加載用來初始化容器的文件架構與目錄。

(7)Graph

Graph在Docker架構中扮演已下載容器鏡像的保管者,以及已下載容器鏡像之間關系的記錄者。一方面,Graph存儲著本地具有版本信息的文件系統(tǒng)鏡像,另一方面也通過GraphDB記錄著所有文件系統(tǒng)鏡像彼此之間的關系。

(8)driver

Driver是Docker架構中的驅動模塊。通過Driver驅動,Docker可以實現(xiàn)對Docker容器執(zhí)行環(huán)境的定制。由于Docker運行的生命周期中,并非用戶所有的操作都是針對Docker容器的管理,另外還有關于Docker運行信息的獲取,Graph的存儲與記錄等。因此,為了將Docker容器的管理從Docker Daemon內部業(yè)務邏輯中區(qū)分開來,設計了Driver層驅動來接管所有這部分請求。

在Docker Driver的實現(xiàn)中,可以分為以下三類驅動:

  • graphdriver主要用于完成容器鏡像的管理,包括存儲與獲取。即當用戶需要下載指定的容器鏡像時,graphdriver將容器鏡像存儲在本地的指定目錄;同時當用戶需要使用指定的容器鏡像來創(chuàng)建容器的rootfs時,graphdriver從本地鏡像存儲目錄中獲取指定的容器鏡像;
  • networkdriver的用途是完成Docker容器網(wǎng)絡環(huán)境的配置,其中包括Docker啟動時為Docker環(huán)境創(chuàng)建網(wǎng)橋;Docker容器創(chuàng)建時為其創(chuàng)建專屬虛擬網(wǎng)卡設備;以及為Docker容器分配IP、端口并與宿主機做端口映射,設置容器防火墻策略等;
  • execdriver作為Docker容器的執(zhí)行驅動,負責創(chuàng)建容器運行命名空間,負責容器資源使用的統(tǒng)計與限制,負責容器內部進程的真正運行等。在execdriver的實現(xiàn)過程中,原先可以使用LXC驅動調用LXC的接口,來操縱容器的配置以及生命周期,而現(xiàn)在execdriver默認使用native驅動,不依賴于LXC。具體體現(xiàn)在Daemon啟動過程中加載的ExecDriverflag參數(shù),該參數(shù)在配置文件已經被設為”native”;
(9)libcontainer

libcontainer是Docker架構中一個使用Go語言設計實現(xiàn)的庫,設計初衷是希望該庫可以不依靠任何依賴,直接訪問內核中與容器相關的API。正是由于libcontainer的存在,Docker可以直接調用libcontainer,而最終操縱容器的namespace、cgroups、apparmor、網(wǎng)絡設備以及防火墻規(guī)則等。

(10)docker container

Docker container(Docker容器)是Docker架構中服務交付的最終體現(xiàn)形式。Docker按照用戶的需求與指令,訂制相應的Docker容器。用戶通過指定容器鏡像,使得Docker容器可以自定義rootfs等文件系統(tǒng); 用戶通過指定計算資源的配額,使得Docker容器使用指定的計算資源; 用戶通過配置網(wǎng)絡及其安全策略,使得Docker容器擁有獨立且安全的網(wǎng)絡環(huán)境; 用戶通過指定運行的命令,使得Docker容器執(zhí)行指定的工作。

如果想對Docker有更加深入的研究可以參考博文:Docker架構原理及簡單使用

————————————本文到此結束,感謝觀看——————————————

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

網(wǎng)站題目:Docker工作原理-創(chuàng)新互聯(lián)
分享路徑:http://muchs.cn/article4/cdspie.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作全網(wǎng)營銷推廣、面包屑導航、定制網(wǎng)站、定制開發(fā)網(wǎng)站導航

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

綿陽服務器托管