偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

什么是容器運(yùn)行時(shí)?

開(kāi)發(fā) 前端
在學(xué)習(xí) 容器鏡像 時(shí),我們討論了容器的基本原理,但現(xiàn)在是深入研究容器運(yùn)行時(shí)runtime的時(shí)候了,從而了解容器環(huán)境是如何構(gòu)建的。本文的部分信息摘自 開(kāi)放容器計(jì)劃Open Container Initiative(OCI)的 官方文檔,所以無(wú)論使用何種容器引擎,這些信息都是一致的。

通過(guò)深入了解容器運(yùn)行時(shí),理解容器環(huán)境是如何建立的。

[[423259]]

在學(xué)習(xí) 容器鏡像 時(shí),我們討論了容器的基本原理,但現(xiàn)在是深入研究容器運(yùn)行時(shí)runtime的時(shí)候了,從而了解容器環(huán)境是如何構(gòu)建的。本文的部分信息摘自 開(kāi)放容器計(jì)劃Open Container Initiative(OCI)的 官方文檔,所以無(wú)論使用何種容器引擎,這些信息都是一致的。

容器運(yùn)行機(jī)制

那么,當(dāng)你運(yùn)行 podman run 或 docker run 命令時(shí),在后臺(tái)到底發(fā)生了什么?一個(gè)分步的概述如下:

  • 如果本地沒(méi)有鏡像,則從鏡像登記倉(cāng)庫(kù)registry拉取鏡像
  • 鏡像被提取到一個(gè)寫(xiě)時(shí)復(fù)制(COW)的文件系統(tǒng)上,所有的容器層相互堆疊以形成一個(gè)合并的文件系統(tǒng)
  • 為容器準(zhǔn)備一個(gè)掛載點(diǎn)
  • 從容器鏡像中設(shè)置元數(shù)據(jù),包括諸如覆蓋 CMD、來(lái)自用戶輸入的 ENTRYPOINT、設(shè)置 SECCOMP 規(guī)則等設(shè)置,以確保容器按預(yù)期運(yùn)行
  • 提醒內(nèi)核為該容器分配某種隔離,如進(jìn)程、網(wǎng)絡(luò)和文件系統(tǒng)(命名空間namespace)
  • 提醒內(nèi)核為改容器分配一些資源限制,如 CPU 或內(nèi)存限制(控制組cgroup)
  • 傳遞一個(gè)系統(tǒng)調(diào)用syscall給內(nèi)核用于啟動(dòng)容器
  • 設(shè)置 SELinux/AppArmor

容器運(yùn)行時(shí)負(fù)責(zé)上述所有的工作。當(dāng)我們提及容器運(yùn)行時(shí),想到的可能是 runc、lxc、containerd、rkt、cri-o 等等。嗯,你沒(méi)有錯(cuò)。這些都是容器引擎和容器運(yùn)行時(shí),每一種都是為不同的情況建立的。

容器運(yùn)行時(shí)Container runtime更側(cè)重于運(yùn)行容器,為容器設(shè)置命名空間和控制組(cgroup),也被稱為底層容器運(yùn)行時(shí)。高層的容器運(yùn)行時(shí)或容器引擎專注于格式、解包、管理和鏡像共享。它們還為開(kāi)發(fā)者提供 API。

開(kāi)放容器計(jì)劃(OCI)

開(kāi)放容器計(jì)劃Open Container Initiative(OCI)是一個(gè) Linux 基金會(huì)的項(xiàng)目。其目的是設(shè)計(jì)某些開(kāi)放標(biāo)準(zhǔn)或圍繞如何與容器運(yùn)行時(shí)和容器鏡像格式工作的結(jié)構(gòu)。它是由 Docker、rkt、CoreOS 和其他行業(yè)領(lǐng)導(dǎo)者于 2015 年 6 月建立的。

它通過(guò)兩個(gè)規(guī)范來(lái)完成如下任務(wù):

1、鏡像規(guī)范

該規(guī)范的目標(biāo)是創(chuàng)建可互操作的工具,用于構(gòu)建、傳輸和準(zhǔn)備運(yùn)行的容器鏡像。

該規(guī)范的高層組件包括:

  • 鏡像清單 — 一個(gè)描述構(gòu)成容器鏡像的元素的文件
  • 鏡像索引 — 鏡像清單的注釋索引
  • 鏡像布局 — 一個(gè)鏡像內(nèi)容的文件系統(tǒng)布局
  • 文件系統(tǒng)布局 — 一個(gè)描述容器文件系統(tǒng)的變更集
  • 鏡像配置 — 確定鏡像層順序和配置的文件,以便轉(zhuǎn)換成 運(yùn)行時(shí)捆包
  • 轉(zhuǎn)換 — 解釋?xiě)?yīng)該如何進(jìn)行轉(zhuǎn)換的文件
  • 描述符 — 一個(gè)描述被引用內(nèi)容的類型、元數(shù)據(jù)和內(nèi)容地址的參考資料

2、運(yùn)行時(shí)規(guī)范

該規(guī)范用于定義容器的配置、執(zhí)行環(huán)境和生命周期。config.json 文件為所有支持的平臺(tái)提供了容器配置,并詳細(xì)定義了用于創(chuàng)建容器的字段。在詳細(xì)定義執(zhí)行環(huán)境時(shí)也描述了為容器的生命周期定義的通用操作,以確保在容器內(nèi)運(yùn)行的應(yīng)用在不同的運(yùn)行時(shí)環(huán)境之間有一個(gè)一致的環(huán)境。

Linux 容器規(guī)范使用了各種內(nèi)核特性,包括命名空間namespace、控制組cgroup、權(quán)能capability、LSM 和文件系統(tǒng)隔離jail等來(lái)實(shí)現(xiàn)該規(guī)范。

小結(jié)

容器運(yùn)行時(shí)是通過(guò) OCI 規(guī)范管理的,以提供一致性和互操作性。許多人在使用容器時(shí)不需要了解它們是如何工作的,但當(dāng)你需要排除故障或優(yōu)化時(shí),了解容器是一個(gè)寶貴的優(yōu)勢(shì)。

責(zé)任編輯:未麗燕 來(lái)源: Linux中國(guó)
相關(guān)推薦

2023-07-28 10:42:43

2024-03-20 10:46:00

云原生容器

2019-07-12 09:30:12

DashboardDockerDNS

2023-01-03 09:10:21

2023-08-29 08:20:35

Kubernete跨云容器

2021-10-22 00:09:16

Kubernetes容器接口

2020-08-11 08:59:20

容器虛擬化技術(shù)

2015-07-20 15:44:46

Swift框架MJExtension反射

2024-03-21 09:15:58

JS運(yùn)行的JavaScrip

2021-03-15 08:33:01

CC++動(dòng)態(tài)庫(kù)

2021-09-02 05:37:22

Containerd Kubernetes 容器

2021-12-23 07:58:06

Kubelet容器運(yùn)行

2013-11-26 16:49:55

Android開(kāi)發(fā)運(yùn)行時(shí)KitKat

2022-01-19 08:50:53

設(shè)備樹(shù)Linux文件系統(tǒng)

2020-12-07 13:31:43

GoMutex開(kāi)發(fā)者

2021-08-18 08:32:09

代碼運(yùn)行時(shí)間示波器

2021-08-27 00:21:19

JSJust源碼

2023-02-12 12:00:57

2022-12-30 08:08:30

2020-11-16 09:28:41

函數(shù)內(nèi)存
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)