成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一文看懂Docker容器技術架構及其中的各個模塊

云計算
docker client 是docker架構中用戶用來和docker daemon建立通信的客戶端,用戶使用的可執行文件為docker,通過docker命令行工具可以發起眾多管理container的請求。

 [[278155]]

概述

今天主要簡單介紹下docker的技術架構及其中組成的各個模塊。

技術架構

一文看懂docker容器技術架構及其中的各個模塊

distribution 負責與docker registry交互,上傳洗澡鏡像以及v2 registry 有關的源數據

registry負責docker registry有關的身份認證、鏡像查找、鏡像驗證以及管理registry mirror等交互操作。

image 負責與鏡像源數據有關的存儲、查找,鏡像層的索引、查找以及鏡像tar包有關的導入、導出操作。

reference負責存儲本地所有鏡像的repository和tag名,并維護與鏡像id之間的映射關系。

layer模塊負責與鏡像層和容器層源數據有關的增刪改查,并負責將鏡像層的增刪改查映射到實際存儲鏡像層文件的graphdriver模塊。

graghdriver是所有與容器鏡像相關操作的執行者。

1、docker client

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

docker client發送容器管理請求后,由docker daemon接受并處理請求,當docker client 接收到返回的請求相應并簡單處理后,docker client 一次完整的生命周期就結束了,當需要繼續發送容器管理請求時,用戶必須再次通過docker可以執行文件創建docker client。

2、docker daemon

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

docker daemon啟動所使用的可執行文件也為docker,與docker client啟動所使用的可執行文件docker相同,在docker命令執行時,通過傳入的參數來判別docker daemon與docker client。

3、docker server

docker server在docker架構中時專門服務于docker client的server,該server的功能時:接受并調度分發docker client發送的請求,架構圖如下:

一文看懂docker容器技術架構及其中的各個模塊

在Docker的啟動過程中,通過包gorilla/mux(golang的類庫解析),創建了一個mux.Router,提供請求的路由功能。在Golang中,gorilla/mux是一個強大的URL路由器以及調度分發器。該mux.Router中添加了眾多的路由項,每一個路由項由HTTP請求方法(PUT、POST、GET或DELETE)、URL、Handler三部分組成。

4、engine

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

在Engine數據結構的設計與實現過程中,有一個handler對象。該handler對象存儲的都是關于眾多特定job的handler處理訪問。舉例說明,Engine的handler對象中有一項為:{“create”: daemon.ContainerCreate,},則說明當名為”create”的job在運行時,執行的是daemon.ContainerCreate的handler。

5、job

一個Job可以認為是Docker架構中Engine內部最基本的工作執行單元。Docker可以做的每一項工作,都可以抽象為一個job。例如:在容器內部運行一個進程,這是一個job;創建一個新的容器,這是一個job,從Internet上下載一個文檔,這是一個job;包括之前在Docker Server部分說過的,創建Server服務于HTTP的API,這也是一個job,等等。

Job的設計者,把Job設計得與Unix進程相仿。比如說:Job有一個名稱,有參數,有環境變量,有標準的輸入輸出,有錯誤處理,有返回狀態等。

6、docker registry

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

在Docker的運行過程中,Docker Daemon會與Docker Registry通信,并實現搜索鏡像、下載鏡像、上傳鏡像三個功能,這三個功能對應的job名稱分別為”search”,”pull” 與 “push”。

其中,在Docker架構中,Docker可以使用公有的Docker Registry,即大家熟知的Docker Hub,如此一來,Docker獲取容器鏡像文件時,必須通過互聯網訪問Docker Hub;同時Docker也允許用戶構建本地私有的Docker Registry,這樣可以保證容器鏡像的獲取在內網完成。

7、Graph

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

一文看懂docker容器技術架構及其中的各個模塊

其中,GraphDB是一個構建在SQLite之上的小型圖數據庫,實現了節點的命名以及節點之間關聯關系的記錄。它僅僅實現了大多數圖數據庫所擁有的一個小的子集,但是提供了簡單的接口表示節點之間的關系。

同時在Graph的本地目錄中,關于每一個的容器鏡像,具體存儲的信息有:該容器鏡像的元數據,容器鏡像的大小信息,以及該容器鏡像所代表的具體rootfs。

8、driver

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

9、libcontainer

libcontainer是Docker架構中一個使用Go語言設計實現的庫,設計初衷是希望該庫可以不依靠任何依賴,直接訪問內核中與容器相關的API。

正是由于libcontainer的存在,Docker可以直接調用libcontainer,而最終操縱容器的namespace、cgroups、apparmor、網絡設備以及防火墻規則等。這一系列操作的完成都不需要依賴LXC或者其他包。libcontainer架構如下:

一文看懂docker容器技術架構及其中的各個模塊

另外,libcontainer提供了一整套標準的接口來滿足上層對容器管理的需求。或者說,libcontainer屏蔽了Docker上層對容器的直接管理。又由于libcontainer使用Go這種跨平臺的語言開發實現,且本身又可以被上層多種不同的編程語言訪問,因此很難說,未來的Docker就一定會緊緊地和Linux捆綁在一起。而于此同時,Microsoft在其著名云計算平臺Azure中,也添加了對Docker的支持,可見Docker的開放程度與業界的火熱度。

10、docker container

Docker container(Docker容器)是Docker架構中服務交付的最終體現形式。

Docker按照用戶的需求與指令,訂制相應的Docker容器:

用戶通過指定容器鏡像,使得Docker容器可以自定義rootfs等文件系統; 用戶通過指定計算資源的配額,使得Docker容器使用指定的計算資源; 用戶通過配置網絡及其安全策略,使得Docker容器擁有獨立且安全的網絡環境; 用戶通過指定運行的命令,使得Docker容器執行指定的工作。

一文看懂docker容器技術架構及其中的各個模塊

 

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2020-02-28 19:00:31

docker架構模塊

2020-01-10 09:44:30

Docker容器模塊

2023-12-18 10:45:31

2019-02-13 15:38:09

存儲虛擬化云計算

2025-05-20 13:52:12

GPU集群微軟

2025-01-09 11:14:14

2020-03-31 14:40:24

HashMap源碼Java

2019-07-09 10:14:04

云計算行業科技

2019-07-11 11:39:31

云計算操作系統IaaS

2016-08-18 00:21:12

網絡爬蟲抓取網絡

2024-08-12 12:30:27

2023-07-14 08:00:00

ORMRust ORMSQL

2025-06-27 02:15:00

芯片流程數字芯片

2025-01-20 09:15:00

iOS 18.3蘋果iOS 18

2021-08-02 06:56:19

TypeScript編程語言編譯器

2017-01-09 15:55:42

eMTC物聯網無線連接

2019-07-05 13:19:43

技術團隊組建績效考核

2019-07-01 09:22:15

Linux操作系統硬件

2019-05-22 09:50:42

Python沙箱逃逸網絡攻擊

2021-08-05 15:12:30

Anolis OS 國密生態國產化
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91美女在线观看 | 欧洲性生活视频 | 成人免费在线播放视频 | 九九九视频精品 | 天天亚洲 | 成人在线视频网站 | 亚洲欧美国产一区二区三区 | 欧美人妖网站 | 国产一区二区免费在线 | 97视频在线免费 | 国产精品色婷婷久久58 | 欧美伊人久久久久久久久影院 | 亚洲一级二级三级 | 欧美一区二区免费视频 | 日日噜噜噜夜夜爽爽狠狠视频, | 国产亚洲欧美另类一区二区三区 | 最新日韩欧美 | 日韩欧美精品一区 | 五月婷婷激情网 | 男女污污网站 | 国产精品国产三级国产aⅴ中文 | 男人天堂网址 | 国产欧美日韩在线一区 | 日韩久久精品电影 | 天天操天天天干 | 91精品国产乱码久久久久久久 | 欧美日韩一区二区在线 | 国内精品免费久久久久软件老师 | 久久99久久98精品免观看软件 | 欧美日韩在线免费观看 | 国产精品亚洲一区 | 久久激情五月丁香伊人 | 五月激情综合 | 中文字幕亚洲国产 | 91av视频在线观看 | 日韩国产中文字幕 | 日韩在线一区二区 | 亚洲一区二区三区视频 | 日韩一区二区三区视频在线播放 | 91香蕉| 一区2区|