摘要:標(biāo)簽空格分隔架構(gòu)注該文作者是,原文地址注該文是由一篇翻譯而來(lái)。資源限制組可以被設(shè)置不超過(guò)一組內(nèi)存限制這也包括文件系統(tǒng)。優(yōu)先級(jí)一些組可能獲得更大的分配和磁盤吞吐量記錄為了測(cè)量某些系統(tǒng)使用了多少資源控制凍結(jié)組或檢查點(diǎn)和重起。
標(biāo)簽(空格分隔): Docker 架構(gòu) Architecture CGroups Namespaces aufs vfs devmapper container
注:該文作者是 rajdeep,原文地址 Docker Architecture (v1.2)
在開(kāi)始之前,我們需要了解注:該文是由一篇 slide 翻譯而來(lái)。
什么是容器?
一組進(jìn)程包含在隔離的環(huán)境
通過(guò)類似 cgroups 和 namespaces 的概念提供隔離
什么是 Docker?
使用鏡像的概念實(shí)現(xiàn)一個(gè)輕便的容器
鏡像是輕便且可發(fā)布的
CGroups限制、記錄(account)和隔離一組進(jìn)程的資源使用(CPU,內(nèi)存,磁盤 I/O,等等。)
資源限制:組可以被設(shè)置不超過(guò)一組內(nèi)存限制 - 這也包括文件系統(tǒng) cache。
優(yōu)先級(jí):一些組可能獲得更大的 CPU 分配和磁盤 I/O 吞吐量
記錄(account):為了測(cè)量某些系統(tǒng)使用了多少資源
控制:凍結(jié)組或檢查點(diǎn)和重起。
Namespace分區(qū)必不可少的內(nèi)核結(jié)構(gòu)來(lái)創(chuàng)建虛擬環(huán)境
不同的 Namespaces
pid(進(jìn)程)
net(網(wǎng)絡(luò)接口,路由。。。)
ipc(System V IPC)
mnt(掛載點(diǎn),文件系統(tǒng))
uts(hostname)
user(UIDs)
Docker管理鏡像和運(yùn)行期容器
后端支持多樣的文件系統(tǒng)
多個(gè) Execdriver 容器實(shí)現(xiàn)
客戶端和服務(wù)器端組件 - 使用 HTTP 和 unix sockets 配合
Docker 運(yùn)行期組件 Docker 引擎Docker 核心:容器存儲(chǔ)
使用任務(wù)管理容器(類似 unix 的任務(wù))
容器處理封裝了任務(wù)的函數(shù)
所有的動(dòng)作使用任務(wù)執(zhí)行
Docker 初始化Docker 的主函數(shù):docker.main()
調(diào)用:mainDaemon()
實(shí)例化引擎:eng := engine.New()
內(nèi)部注冊(cè):built--‐ins builtsin.Register(eng)
實(shí)例化任務(wù):job := eng.Job(“initserver”)
為任務(wù)設(shè)置變量
運(yùn)行任務(wù): job.run()
啟動(dòng)接受的連接:eng.Job(“AcceptConnections”).run()
內(nèi)部注冊(cè):
nstantiate daemon(eng) eng.Register("initserver", server.InitServer) eng.Register(“init_networkdriver”, bridge.InitDriver)
Daemon注:感覺(jué)作者這里凌亂了,處女座受不了啊。見(jiàn)圖
主入口點(diǎn)管理容器的所有請(qǐng)求
維護(hù)以下引用的數(shù)據(jù)結(jié)構(gòu):
ImageGraph
Volume Graph
Engine
ExecDriver
Server
ContainerStore
Graph 是一個(gè)存儲(chǔ)系統(tǒng)文件版本和鏡像關(guān)系的數(shù)據(jù)結(jié)構(gòu)
為每一個(gè)容器實(shí)例化一個(gè) Graph
引用一個(gè) graphdriver.Driver
在一個(gè) Graph 上的動(dòng)作:
創(chuàng)建一個(gè)新的 Graph
從一個(gè) Graph 中獲取鏡像
恢復(fù)一個(gè) Graph
創(chuàng)建一個(gè)鏡像并且注冊(cè)進(jìn) Graph
在 Graph 上注冊(cè)一個(gè)預(yù)先存在的鏡像
在 Docker 中鏡像和容器的概念Docker 鏡像是文件系統(tǒng)中的一層
容器是兩層:
層一是基于鏡像的初始化層
層二是實(shí)際的容器內(nèi)容
Graph Driver被 Daemon 引用
用于抽象多種后端存儲(chǔ)
加載以下后端文件系統(tǒng):
aufs
Device mapper(devmapper)
vfs
btrfs
容器存儲(chǔ)持久化后端的容器數(shù)據(jù)
使用 SQLite 實(shí)現(xiàn)
從 Daemon 引用
containGraph:graph
在 Daemon 恢復(fù)期間用于加載容器信息
Volume Graph基于 Graph 的簡(jiǎn)單 vfs,為了與容器卷保持聯(lián)系
Volumes 使用在 Daemon 中的卷驅(qū)動(dòng)器來(lái)創(chuàng)建和連接容器的卷
每個(gè)容器被分配一個(gè)或多個(gè)卷
ExecDriver對(duì)底層 Linux 控制的抽象
從 daemon 調(diào)用
支持以下實(shí)現(xiàn)
LXC
Native
驅(qū)動(dòng)接口抽象接口與底層實(shí)現(xiàn)交互
驅(qū)動(dòng)接口 - 網(wǎng)絡(luò)抽象接口與底層實(shí)現(xiàn)交互
libcontainer容器的底層原生實(shí)現(xiàn)
被原生的驅(qū)動(dòng)使用
Container.config - 一個(gè)容器數(shù)據(jù)的表示
包裝過(guò)的 cgroups 和 Namespaces
原生的驅(qū)動(dòng)實(shí)現(xiàn) 創(chuàng)建容器的步驟Engine --‐> Daemon --‐> ContainerCreate
ContainerCrea
2.1 檢查定義在配置文件中的內(nèi)存是比 512k 大還是系統(tǒng)定義的限制小
2.2 檢查 SwapLimit
2.3 調(diào)用 Daemon --‐> Create
2.3.1 daemon.repositories.LookupImage --‐> tagStore.getImage() 2.3.2 daemon.newContainer() 2.3.2.1 NewContainerMonitor() 2.3.3 daemon.createRootFs() 2.3.3.1 daemon.container.driver.Create()[Graph Driver --‐ aufs, btrfs, devicemapper] 2.3.3.2 container.ToDisk()//持久化容器總結(jié)
Linux 控制原則
Docker 架構(gòu)組件
原生的驅(qū)動(dòng)實(shí)現(xiàn)
libcontainer
容器創(chuàng)建
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/26334.html
摘要:年月日,發(fā)布版本,本次版本更新帶來(lái)了全新的應(yīng)用市場(chǎng)交付體驗(yàn),并對(duì)源碼類服務(wù)的運(yùn)行機(jī)制架構(gòu)服務(wù)管理等方面做了大量?jī)?yōu)化。發(fā)布社區(qū)公開(kāi)應(yīng)用。我們正在進(jìn)行的是將應(yīng)用轉(zhuǎn)化為應(yīng)用存放于應(yīng)用市場(chǎng)中供用戶直接安裝使用。 2019年7月8日,Rainbond發(fā)布5.1.5版本,本次版本更新帶來(lái)了全新的應(yīng)用市場(chǎng)交付Pipeline體驗(yàn),并對(duì)源碼類服務(wù)的運(yùn)行機(jī)制、ServiceMesh架構(gòu)、服務(wù)管理等方面做...
摘要:發(fā)布,微服務(wù)架構(gòu)應(yīng)用便捷管理和交付是開(kāi)源的企業(yè)應(yīng)用云操作系統(tǒng),支撐企業(yè)應(yīng)用的開(kāi)發(fā)架構(gòu)交付和運(yùn)維的全流程,通過(guò)無(wú)侵入架構(gòu),無(wú)縫銜接各類企業(yè)應(yīng)用,底層資源可以對(duì)接和管理虛擬機(jī)和物理服務(wù)器。 Rainbond v5.1.2發(fā)布,微服務(wù)架構(gòu)應(yīng)用便捷管理和交付 Rainbond是開(kāi)源的企業(yè)應(yīng)用云操作系統(tǒng),支撐企業(yè)應(yīng)用的開(kāi)發(fā)、架構(gòu)、交付和運(yùn)維的全流程,通過(guò)無(wú)侵入架構(gòu),無(wú)縫銜接各類企業(yè)應(yīng)用,底層資源...
摘要:發(fā)布,微服務(wù)架構(gòu)應(yīng)用便捷管理和交付是開(kāi)源的企業(yè)應(yīng)用云操作系統(tǒng),支撐企業(yè)應(yīng)用的開(kāi)發(fā)架構(gòu)交付和運(yùn)維的全流程,通過(guò)無(wú)侵入架構(gòu),無(wú)縫銜接各類企業(yè)應(yīng)用,底層資源可以對(duì)接和管理虛擬機(jī)和物理服務(wù)器。 Rainbond v5.1.2發(fā)布,微服務(wù)架構(gòu)應(yīng)用便捷管理和交付 Rainbond是開(kāi)源的企業(yè)應(yīng)用云操作系統(tǒng),支撐企業(yè)應(yīng)用的開(kāi)發(fā)、架構(gòu)、交付和運(yùn)維的全流程,通過(guò)無(wú)侵入架構(gòu),無(wú)縫銜接各類企業(yè)應(yīng)用,底層資源...
摘要:發(fā)布,微服務(wù)架構(gòu)應(yīng)用便捷管理和交付是開(kāi)源的企業(yè)應(yīng)用云操作系統(tǒng),支撐企業(yè)應(yīng)用的開(kāi)發(fā)架構(gòu)交付和運(yùn)維的全流程,通過(guò)無(wú)侵入架構(gòu),無(wú)縫銜接各類企業(yè)應(yīng)用,底層資源可以對(duì)接和管理虛擬機(jī)和物理服務(wù)器。 Rainbond v5.1.2發(fā)布,微服務(wù)架構(gòu)應(yīng)用便捷管理和交付 Rainbond是開(kāi)源的企業(yè)應(yīng)用云操作系統(tǒng),支撐企業(yè)應(yīng)用的開(kāi)發(fā)、架構(gòu)、交付和運(yùn)維的全流程,通過(guò)無(wú)侵入架構(gòu),無(wú)縫銜接各類企業(yè)應(yīng)用,底層資源...
閱讀 829·2021-10-13 09:39
閱讀 3709·2021-10-12 10:12
閱讀 1760·2021-08-13 15:07
閱讀 1019·2019-08-29 15:31
閱讀 2894·2019-08-26 13:25
閱讀 1785·2019-08-23 18:38
閱讀 1890·2019-08-23 18:25
閱讀 1863·2019-08-23 17:20