国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Docker 架構 - 基于 1.2 版本

kaka / 3096人閱讀

摘要:標簽空格分隔架構注該文作者是,原文地址注該文是由一篇翻譯而來。資源限制組可以被設置不超過一組內存限制這也包括文件系統。優先級一些組可能獲得更大的分配和磁盤吞吐量記錄為了測量某些系統使用了多少資源控制凍結組或檢查點和重起。

標簽(空格分隔): Docker 架構 Architecture CGroups Namespaces aufs vfs devmapper container


  

注:該文作者是 rajdeep,原文地址 Docker Architecture (v1.2)

  

注:該文是由一篇 slide 翻譯而來。

在開始之前,我們需要了解

什么是容器?

一組進程包含在隔離的環境

通過類似 cgroups 和 namespaces 的概念提供隔離

什么是 Docker?

使用鏡像的概念實現一個輕便的容器

鏡像是輕便且可發布的

CGroups

限制、記錄(account)和隔離一組進程的資源使用(CPU,內存,磁盤 I/O,等等。)

資源限制:組可以被設置不超過一組內存限制 - 這也包括文件系統 cache。

優先級:一些組可能獲得更大的 CPU 分配和磁盤 I/O 吞吐量

記錄(account):為了測量某些系統使用了多少資源

控制:凍結組或檢查點和重起。

Namespace

分區必不可少的內核結構來創建虛擬環境

不同的 Namespaces

pid(進程)

net(網絡接口,路由。。。)

ipc(System V IPC)

mnt(掛載點,文件系統)

uts(hostname)

user(UIDs)

Docker

管理鏡像和運行期容器

后端支持多樣的文件系統

多個 Execdriver 容器實現

客戶端和服務器端組件 - 使用 HTTP 和 unix sockets 配合

Docker 運行期組件

Docker 引擎

Docker 核心:容器存儲

使用任務管理容器(類似 unix 的任務)

容器處理封裝了任務的函數

所有的動作使用任務執行

Docker 初始化

Docker 的主函數:docker.main()

調用:mainDaemon()

實例化引擎:eng := engine.New()

內部注冊:built--‐ins builtsin.Register(eng)

實例化任務:job := eng.Job(“initserver”)

為任務設置變量

運行任務: job.run()

啟動接受的連接:eng.Job(“AcceptConnections”).run()

內部注冊:

nstantiate daemon(eng) 
eng.Register("initserver", server.InitServer) 
eng.Register(“init_networkdriver”, bridge.InitDriver)
  

注:感覺作者這里凌亂了,處女座受不了啊。見圖


Daemon

主入口點管理容器的所有請求

維護以下引用的數據結構:

ImageGraph

Volume Graph

Engine

ExecDriver

Server

ContainerStore

Daemon - Graph

Graph 是一個存儲系統文件版本和鏡像關系的數據結構

為每一個容器實例化一個 Graph

引用一個 graphdriver.Driver

在一個 Graph 上的動作:

創建一個新的 Graph

從一個 Graph 中獲取鏡像

恢復一個 Graph

創建一個鏡像并且注冊進 Graph

在 Graph 上注冊一個預先存在的鏡像

在 Docker 中鏡像和容器的概念

Docker 鏡像是文件系統中的一層

容器是兩層:

層一是基于鏡像的初始化層

層二是實際的容器內容

Graph Driver

被 Daemon 引用

用于抽象多種后端存儲

加載以下后端文件系統:

aufs

Device mapper(devmapper)

vfs

btrfs

容器存儲

持久化后端的容器數據

使用 SQLite 實現

從 Daemon 引用

containGraph:graph

在 Daemon 恢復期間用于加載容器信息

Volume Graph

基于 Graph 的簡單 vfs,為了與容器卷保持聯系

Volumes 使用在 Daemon 中的卷驅動器來創建和連接容器的卷

每個容器被分配一個或多個卷

ExecDriver

對底層 Linux 控制的抽象

從 daemon 調用

支持以下實現

LXC

Native

驅動接口

抽象接口與底層實現交互

驅動接口 - 網絡

抽象接口與底層實現交互

libcontainer

容器的底層原生實現

被原生的驅動使用

Container.config - 一個容器數據的表示

包裝過的 cgroups 和 Namespaces

原生的驅動實現

創建容器的步驟

Engine --‐> Daemon --‐> ContainerCreate

ContainerCrea

2.1 檢查定義在配置文件中的內存是比 512k 大還是系統定義的限制小
2.2 檢查 SwapLimit
2.3 調用 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()//持久化容器

總結

Linux 控制原則

Docker 架構組件

原生的驅動實現

libcontainer

容器創建

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/26334.html

相關文章

  • Rainbond 5.1.5發布,企業應用市場遠程一鍵安裝

    摘要:年月日,發布版本,本次版本更新帶來了全新的應用市場交付體驗,并對源碼類服務的運行機制架構服務管理等方面做了大量優化。發布社區公開應用。我們正在進行的是將應用轉化為應用存放于應用市場中供用戶直接安裝使用。 2019年7月8日,Rainbond發布5.1.5版本,本次版本更新帶來了全新的應用市場交付Pipeline體驗,并對源碼類服務的運行機制、ServiceMesh架構、服務管理等方面做...

    Aomine 評論0 收藏0
  • Rainbond v5.1.2發布,微服務架構應用便捷管理和交付

    摘要:發布,微服務架構應用便捷管理和交付是開源的企業應用云操作系統,支撐企業應用的開發架構交付和運維的全流程,通過無侵入架構,無縫銜接各類企業應用,底層資源可以對接和管理虛擬機和物理服務器。 Rainbond v5.1.2發布,微服務架構應用便捷管理和交付 Rainbond是開源的企業應用云操作系統,支撐企業應用的開發、架構、交付和運維的全流程,通過無侵入架構,無縫銜接各類企業應用,底層資源...

    miguel.jiang 評論0 收藏0
  • Rainbond v5.1.2發布,微服務架構應用便捷管理和交付

    摘要:發布,微服務架構應用便捷管理和交付是開源的企業應用云操作系統,支撐企業應用的開發架構交付和運維的全流程,通過無侵入架構,無縫銜接各類企業應用,底層資源可以對接和管理虛擬機和物理服務器。 Rainbond v5.1.2發布,微服務架構應用便捷管理和交付 Rainbond是開源的企業應用云操作系統,支撐企業應用的開發、架構、交付和運維的全流程,通過無侵入架構,無縫銜接各類企業應用,底層資源...

    AdolphLWQ 評論0 收藏0
  • Rainbond v5.1.2發布,微服務架構應用便捷管理和交付

    摘要:發布,微服務架構應用便捷管理和交付是開源的企業應用云操作系統,支撐企業應用的開發架構交付和運維的全流程,通過無侵入架構,無縫銜接各類企業應用,底層資源可以對接和管理虛擬機和物理服務器。 Rainbond v5.1.2發布,微服務架構應用便捷管理和交付 Rainbond是開源的企業應用云操作系統,支撐企業應用的開發、架構、交付和運維的全流程,通過無侵入架構,無縫銜接各類企業應用,底層資源...

    hzc 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<