精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

容器技術(shù)的發(fā)展與基本原理

云計(jì)算
從容器的發(fā)展歷程可以看到,容器在出現(xiàn)的早期并沒(méi)有得到人們的廣泛關(guān)注,主要原因是當(dāng)時(shí)開(kāi)放的云計(jì)算環(huán)境還沒(méi)出現(xiàn)或者未成為主流。2010年之后,隨著IaaS、PaaS和SaaS等云平臺(tái)逐漸成熟,用戶對(duì)云端應(yīng)用開(kāi)發(fā)、部署和運(yùn)維的效率不斷重視,重新發(fā)掘了容器的價(jià)值,最終促成了容器技術(shù)的盛行。

容器技術(shù)的發(fā)展背景

近些年來(lái),容器技術(shù)迅速席卷全球,顛覆了應(yīng)用的開(kāi)發(fā)、交付和運(yùn)行模式,在云計(jì)算、互聯(lián)網(wǎng)等領(lǐng)域得到了廣泛應(yīng)用。其實(shí),容器技術(shù)在約二十年前就出現(xiàn)了,但直到2013年Docker推出之后才遍地開(kāi)花,其中有偶然因素,也有大環(huán)境造就的必然因素。這里回顧一下容器的產(chǎn)生的背景和發(fā)展過(guò)程。

在電子計(jì)算機(jī)剛出現(xiàn)時(shí),由于硬件成本高昂,人們?cè)噲D尋找能夠多用戶共享計(jì)算資源的方式,以提高資源利用率和降低成本。在20世紀(jì)60年代,基于硬件技術(shù)的主機(jī)虛擬化技術(shù)出現(xiàn)了。一臺(tái)物理主機(jī)可以被劃分為若干個(gè)小的機(jī)器,每個(gè)機(jī)器的硬件互不共享,并可以安裝各自的操作系統(tǒng)來(lái)使用。20世紀(jì)90年代后期,X86架構(gòu)的硬件虛擬化技術(shù)逐漸興起,可在同一臺(tái)物理機(jī)上隔離多個(gè)操作系統(tǒng)實(shí)例,帶來(lái)了很多的優(yōu)點(diǎn),目前絕大多數(shù)的數(shù)據(jù)中心都采用了硬件虛擬化技術(shù)。

雖然硬件虛擬化提供了分隔資源的能力,但是采用虛擬機(jī)方式隔離應(yīng)用程序時(shí),效率往往較低,畢竟還要在每個(gè)虛擬機(jī)中安裝或復(fù)制一個(gè)操作系統(tǒng)實(shí)例,然后把應(yīng)用部署到其中。因此人們探索出一種更輕量的方案——操作系統(tǒng)虛擬化,使面向應(yīng)用的管理更便捷。所謂操作系統(tǒng)虛擬化,就是由操作系統(tǒng)創(chuàng)建虛擬的系統(tǒng)環(huán)境,使應(yīng)用感知不到其他應(yīng)用的存在,仿佛在獨(dú)自占有全部的系統(tǒng)資源,從而實(shí)現(xiàn)應(yīng)用隔離的目的。在這種方式中不需要虛擬機(jī),也能夠?qū)崿F(xiàn)應(yīng)用彼此隔離,由于應(yīng)用是共享同一個(gè)操作系統(tǒng)實(shí)例的,因此比虛擬機(jī)更節(jié)省資源,性能更好。操作系統(tǒng)虛擬化在不少系統(tǒng)里面也被稱為容器(Container),下面也會(huì)以容器來(lái)指代操作系統(tǒng)虛擬化。

操作系統(tǒng)虛擬化最早出現(xiàn)在2000年,F(xiàn)reeBSD 4.0推出了Jail。Jail加強(qiáng)和改進(jìn)了用于文件系統(tǒng)隔離的chroot環(huán)境。到了2004年,Sun公司發(fā)布了Solaris 10的Containers,包括Zones和Resource management兩部分。Zones實(shí)現(xiàn)了命名空間隔離和安全訪問(wèn)控制,Resource management實(shí)現(xiàn)了資源分配控制。2007年,Control Groups(簡(jiǎn)稱cgroups)進(jìn)入Linux內(nèi)核,可以限定和隔離一組進(jìn)程所使用的資源(包括CPU、內(nèi)存、I/O和網(wǎng)絡(luò)等)。

2013年,Docker公司發(fā)布Docker開(kāi)源項(xiàng)目,提供了一系列簡(jiǎn)便的工具鏈來(lái)使用容器。毫不夸張地說(shuō),Docker公司率先點(diǎn)燃了容器技術(shù)的火焰,拉開(kāi)了云原生應(yīng)用變革的帷幕,促進(jìn)容器生態(tài)圈一日千里地發(fā)展。截至2020年,Docker Hub中的鏡像累計(jì)下載了1300億次,用戶創(chuàng)建了約600萬(wàn)個(gè)容器鏡像庫(kù)。從這些數(shù)據(jù)可以看到,用戶正在以驚人的速度從傳統(tǒng)模式切換到基于容器的應(yīng)用發(fā)布和運(yùn)維模式。

2015年,OCI(Open Container Initiative)作為L(zhǎng)inux基金會(huì)項(xiàng)目成立,旨在推動(dòng)開(kāi)源技術(shù)社區(qū)制定容器鏡像和運(yùn)行時(shí)規(guī)范,使不同廠家的容器解決方案具備互操作能力。同年還成立了CNCF,目的是促進(jìn)容器技術(shù)在云原生領(lǐng)域的應(yīng)用,降低用戶開(kāi)發(fā)云原生應(yīng)用的門(mén)檻。創(chuàng)始會(huì)員包括谷歌、紅帽、Docker、VMware等多家公司和組織。

CNCF成立之初只有一個(gè)開(kāi)源項(xiàng)目,就是后來(lái)大名鼎鼎的Kubernetes。Kubernetes是一個(gè)容器應(yīng)用的編排工具,最早由谷歌的團(tuán)隊(duì)研發(fā),后來(lái)開(kāi)源并捐贈(zèng)給了CNCF成為種子項(xiàng)目。由于Kubernetes是廠家中立的開(kāi)源項(xiàng)目,開(kāi)源后得到了社區(qū)用戶和開(kāi)發(fā)者的廣泛參與和支持。到了2018年,Kubernetes已成為容器編排領(lǐng)域事實(shí)上的標(biāo)準(zhǔn),并成為首個(gè)CNCF的畢業(yè)(graduated)項(xiàng)目。2020年8月,CNCF旗下的開(kāi)源項(xiàng)目增加到了63個(gè),包括原創(chuàng)于中國(guó)的Harbor等項(xiàng)目。

從容器的發(fā)展歷程可以看到,容器在出現(xiàn)的早期并沒(méi)有得到人們的廣泛關(guān)注,主要原因是當(dāng)時(shí)開(kāi)放的云計(jì)算環(huán)境還沒(méi)出現(xiàn)或者未成為主流。2010年之后,隨著IaaS、PaaS和SaaS等云平臺(tái)逐漸成熟,用戶對(duì)云端應(yīng)用開(kāi)發(fā)、部署和運(yùn)維的效率不斷重視,重新發(fā)掘了容器的價(jià)值,最終促成了容器技術(shù)的盛行。

容器的基本原理

本節(jié)以Linux容器為例,講解容器的實(shí)現(xiàn)原理,主要包括命名空間(Namespace)和控制組(cgroups)。

命名空間

命名空間是Linux操作系統(tǒng)內(nèi)核的一種資源隔離方式,使不同的進(jìn)程具有不同的系統(tǒng)視圖。系統(tǒng)視圖就是進(jìn)程能夠感知到的系統(tǒng)環(huán)境,如主機(jī)名、文件系統(tǒng)、網(wǎng)絡(luò)協(xié)議棧、其他用戶和進(jìn)程等。使用命名空間后,每個(gè)進(jìn)程都具備獨(dú)立的系統(tǒng)環(huán)境,進(jìn)程間彼此感覺(jué)不到對(duì)方的存在,進(jìn)程之間相互隔離。目前,Linux中的命名空間共有6種,可以嵌套使用。

  • Mount:隔離了文件系統(tǒng)的掛載點(diǎn)(mount points),處于不同“mount”命名空間中的進(jìn)程可以看到不同的文件系統(tǒng)。
  • Network:隔離進(jìn)程網(wǎng)絡(luò)方面的系統(tǒng)資源,包括網(wǎng)絡(luò)設(shè)備、IPv4和IPv6的協(xié)議棧、路由表、防火墻等。
  • IPC:進(jìn)程間相互通信的命名空間,不同命名空間中的進(jìn)程不能通信。
  • PID:進(jìn)程號(hào)在不同的命名空間中是獨(dú)立編號(hào)的,不同的命名空間中的進(jìn)程可以有相同的編號(hào)。當(dāng)然,這些進(jìn)程在操作系統(tǒng)中的全局(命名空間外)編號(hào)是唯一的。
  • UTS:系統(tǒng)標(biāo)識(shí)符命名空間,在每個(gè)命名空間中都可以有不同的主機(jī)名和NIS域名。
  • User:命名空間中的用戶可以有不同于全局的用戶ID和組ID,從而具有不同的特權(quán)。

命名空間實(shí)現(xiàn)了在同一操作系統(tǒng)中隔離進(jìn)程的方法,幾乎沒(méi)有額外的系統(tǒng)開(kāi)銷(xiāo),所以是非常輕量的隔離方式,進(jìn)程啟動(dòng)和運(yùn)行的過(guò)程在命名空間中和外面幾乎沒(méi)有差別。

控制組

命名空間實(shí)現(xiàn)了進(jìn)程隔離功能,但由于各個(gè)命名空間中的進(jìn)程仍然共享同樣的系統(tǒng)資源,如CPU、磁盤(pán)I/O、內(nèi)存等,所以如果某個(gè)進(jìn)程長(zhǎng)時(shí)間占用某些資源,其他命名空間里的進(jìn)程就會(huì)受到影響,這就是“吵鬧的鄰居(noisy neighbors)”現(xiàn)象。因此,命名空間并沒(méi)有完全達(dá)到進(jìn)程隔離的目的。為此,Linux內(nèi)核提供了控制組(Control Groups,cgroups)功能來(lái)處理這個(gè)問(wèn)題。

Linux把進(jìn)程分成控制組,給每組里的進(jìn)程都設(shè)定資源使用規(guī)則和限制。在發(fā)生資源競(jìng)爭(zhēng)時(shí),系統(tǒng)會(huì)根據(jù)每個(gè)組的定義,按照比例在控制組之間分配資源。控制組可設(shè)定規(guī)則的資源包括CPU、內(nèi)存、磁盤(pán)I/O和網(wǎng)絡(luò)等。通過(guò)這種方式,就不會(huì)出現(xiàn)某些進(jìn)程無(wú)限度搶占其他進(jìn)程資源的情況。

Linux系統(tǒng)通過(guò)命名空間設(shè)置進(jìn)程的可見(jiàn)且可用資源,通過(guò)控制組規(guī)定進(jìn)程對(duì)資源的使用量,這樣隔離進(jìn)程的虛擬環(huán)境(即容器)就建立起來(lái)了。

容器運(yùn)行時(shí)

Linux 提供了命名空間和控制組兩大系統(tǒng)功能,它們是容器的基礎(chǔ)。但是,要把進(jìn)程運(yùn)行在容器中,還需要有便捷的SDK或命令來(lái)調(diào)用Linux的系統(tǒng)功能,從而創(chuàng)建出容器。容器的運(yùn)行時(shí)(runtime)就是容器進(jìn)程運(yùn)行和管理的工具。

容器運(yùn)行時(shí)分為低層運(yùn)行時(shí)和高層運(yùn)行時(shí),功能各有側(cè)重。低層運(yùn)行時(shí)主要負(fù)責(zé)運(yùn)行容器,可在給定的容器文件系統(tǒng)上運(yùn)行容器的進(jìn)程;高層運(yùn)行時(shí)則主要為容器準(zhǔn)備必要的運(yùn)行環(huán)境,如容器鏡像下載和解壓并轉(zhuǎn)化為容器所需的文件系統(tǒng)、創(chuàng)建容器的網(wǎng)絡(luò)等,然后調(diào)用低層運(yùn)行時(shí)啟動(dòng)容器。主要的容器運(yùn)行時(shí)的關(guān)系如下圖所示。

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

成立于2015年的OCI是Linux基金會(huì)旗下的合作項(xiàng)目,以開(kāi)放治理的方式制定操作系統(tǒng)虛擬化(特別是Linux容器)的開(kāi)放工業(yè)標(biāo)準(zhǔn),主要包括容器鏡像格式和容器運(yùn)行時(shí)(runtime)。初始成員包括Docker、亞馬遜、CoreOS、谷歌、微軟和VMware等公司。OCI成立之初,Docker公司為其捐贈(zèng)了容器鏡像格式和運(yùn)行時(shí)的草案及相應(yīng)的實(shí)現(xiàn)代碼。原來(lái)屬于Docker的libcontainer項(xiàng)目被捐贈(zèng)給OCI,成為獨(dú)立的容器運(yùn)行時(shí)項(xiàng)目runC。

OCI運(yùn)行時(shí)規(guī)范定義了容器配置、運(yùn)行時(shí)和生命周期的標(biāo)準(zhǔn),主流的容器運(yùn)行時(shí)都遵循OCI運(yùn)行時(shí)的規(guī)范,從而提高系統(tǒng)的可移植性和互操作性,用戶可根據(jù)需要進(jìn)行選擇。

首先,容器啟動(dòng)前需要在文件系統(tǒng)中按一定格式存放所需的文件。OCI運(yùn)行時(shí)規(guī)范定義了容器文件系統(tǒng)包(filesystem bundle)的標(biāo)準(zhǔn),在OCI運(yùn)行時(shí)的實(shí)現(xiàn)中通常由高層運(yùn)行時(shí)下載OCI鏡像,并將OCI鏡像解壓成OCI運(yùn)行時(shí)文件系統(tǒng)包,然后OCI運(yùn)行時(shí)讀取配置信息和啟動(dòng)容器里的進(jìn)程。OCI運(yùn)行時(shí)文件系統(tǒng)包主要包括以下兩部分。

  • config.json:這是必需的配置文件,存放于文件系統(tǒng)包的根目錄下。OCI運(yùn)行時(shí)規(guī)范對(duì)Linux、Windows、Solaris和虛擬機(jī)4種平臺(tái)的運(yùn)行時(shí)做了相應(yīng)的配置規(guī)范。
  • 容器的根文件系統(tǒng):容器啟動(dòng)后進(jìn)程所使用的根文件系統(tǒng),由 config.json 中的root.path屬性確定該文件系統(tǒng)的路徑,通常是“rootfs/”。

然后,在定義文件系統(tǒng)包的基礎(chǔ)上,OCI運(yùn)行時(shí)規(guī)范制定了運(yùn)行時(shí)和生命周期管理規(guī)范。生命周期定義了容器從創(chuàng)建到刪除的全過(guò)程,可用以下三條命令說(shuō)明。

  • “create”命令:在調(diào)用該命令時(shí)需要用到文件系統(tǒng)包的目錄位置和容器的唯一標(biāo)識(shí)。在創(chuàng)建運(yùn)行環(huán)境時(shí)需要使用config.json里面的配置。在創(chuàng)建的過(guò)程中,用戶可加入某些事件鉤子(hook)來(lái)觸發(fā)一些定制化處理,這些事件鉤子包括prestart、createRuntime和createContainer。
  • “start”命令:在調(diào)用該命令時(shí)需要運(yùn)行容器的唯一標(biāo)識(shí)。用戶可在 config.json 的process 屬性中指明運(yùn)行程序的詳細(xì)信息。“start”命令包括兩個(gè)事件鉤子:startContainer和poststart。
  • “delete”命令:在調(diào)用該命令時(shí)需要運(yùn)行容器的唯一標(biāo)識(shí)。在用戶的程序終止后(包括正常和異常退出),容器運(yùn)行時(shí)執(zhí)行“delete”命令以清除容器的運(yùn)行環(huán)境。“delete”命令有一個(gè)事件鉤子:poststop。

除了上述生命周期命令,OCI運(yùn)行時(shí)還必須支持另外兩條命令。

“state”命令:在調(diào)用該命令時(shí)需要運(yùn)行容器的唯一標(biāo)識(shí)。該命令查詢某個(gè)容器的狀態(tài),必須包括的狀態(tài)屬性有ociVersion、id、status、pid和bundle,可選屬性有annotation。不同的運(yùn)行時(shí)實(shí)現(xiàn)可能會(huì)有一些差異。下面是一個(gè)容器狀態(tài)的例子:

 

  1.     "ociVersion""1.0.1"
  2.     "id""oci-container001"
  3.     "status""running"
  4.     "pid": 8080, 
  5.     "bundle""/containers/nginx"
  6.     "annotations": { 
  7.         "key1""value1" 
  8.     } 
  9. }  

“kill”命令:在調(diào)用該命令時(shí)需要運(yùn)行容器的唯一標(biāo)識(shí)和信號(hào)(signal)編號(hào)。該命令給容器進(jìn)程發(fā)送信號(hào),如Linux操作系統(tǒng)的信號(hào)9表示立即終止進(jìn)程。

runC

runC是OCI運(yùn)行時(shí)規(guī)范的參考實(shí)現(xiàn),也是最常用的容器運(yùn)行時(shí),被其他多個(gè)項(xiàng)目使用,如containerd和CRI-O等。runC也是低層容器運(yùn)行時(shí),開(kāi)發(fā)人員可通過(guò)runC實(shí)現(xiàn)容器的生命周期管理,避免煩瑣的操作系統(tǒng)調(diào)用。根據(jù)OCI運(yùn)行時(shí)規(guī)范,runC不包括容器鏡像的管理功能,它假定容器的文件包已經(jīng)從鏡像里解壓出來(lái)并存放于文件系統(tǒng)中。runC創(chuàng)建的容器需要手動(dòng)配置網(wǎng)絡(luò)才能與其他容器或者網(wǎng)絡(luò)節(jié)點(diǎn)連通,為此可在容器啟動(dòng)之前通過(guò)OCI定義的事件鉤子來(lái)設(shè)置網(wǎng)絡(luò)。

由于runC提供的功能比較單一,復(fù)雜的環(huán)境需要更高層的容器運(yùn)行時(shí)來(lái)生成,所以runC常常成為其他高層容器運(yùn)行時(shí)的底層實(shí)現(xiàn)基礎(chǔ)。

containerd

在OCI成立時(shí),Docker公司把其Docker項(xiàng)目拆分為runC的低層運(yùn)行時(shí)及高層運(yùn)行時(shí)功能。2017年,Docker公司把這部分高層容器運(yùn)行時(shí)的功能集中到containerd項(xiàng)目里,捐贈(zèng)給云原生計(jì)算基金會(huì)。

containerd 已經(jīng)成為多個(gè)項(xiàng)目共同使用的高層容器運(yùn)行時(shí),提供了容器鏡像的下載和解壓等鏡像管理功能,在運(yùn)行容器時(shí),containerd先把鏡像解壓成OCI的文件系統(tǒng)包,然后調(diào)用runC運(yùn)行容器。containerd提供了API,其他應(yīng)用程序可以通過(guò)API與containerd交互。“ctr”是containerd的命令行工具,和“docker”命令很相像。但作為容器運(yùn)行時(shí),containerd只注重在容器運(yùn)行等方面,因而不包含開(kāi)發(fā)者使用的鏡像構(gòu)建和鏡像上傳鏡像倉(cāng)庫(kù)等功能。

Docker

Docker引擎是最早流行也是最廣泛使用的容器運(yùn)行時(shí)之一,是一個(gè)容器管理工具,架構(gòu)如下圖所示。Docker的客戶端(命令行CLI工具)通過(guò)API調(diào)用容器引擎Docker Daemon(dockerd)的功能,完成各種容器管理任務(wù)。

Docker引擎在發(fā)布時(shí)是一個(gè)單體應(yīng)用,所有功能都集中在一個(gè)可執(zhí)行文件里,后來(lái)按功能分拆成runC和containerd兩個(gè)不同層次的運(yùn)行時(shí),分別捐獻(xiàn)給了OCI和CNCF。上面兩節(jié)已經(jīng)分別介紹了runC和containerd的主要特點(diǎn),剩下的dockerd就是Docker公司維護(hù)的容器運(yùn)行時(shí)。

dockerd同時(shí)提供了面向開(kāi)發(fā)者和面向運(yùn)維人員的功能。其中,面向開(kāi)發(fā)者的命令主要提供鏡像管理功能。容器鏡像一般可由Dockerfile構(gòu)建(build)而來(lái)。Dockerfile是一個(gè)文本文件,通過(guò)一組命令關(guān)鍵字定義了容器鏡像所包含的基礎(chǔ)鏡像(base image)、所需的軟件包及有關(guān)應(yīng)用程序。在Dockerfile編寫(xiě)完成以后,就可以用“docker build”命令構(gòu)建鏡像了。下面是一個(gè)Dockerfile的簡(jiǎn)單例子:

 

  1. FROM ubuntu:18.04 
  2. EXPOSE 8080 
  3. CMD ["nginx""-g""daemon off;"

容器的鏡像在構(gòu)建之后被存放在本地鏡像庫(kù)里,當(dāng)需要與其他節(jié)點(diǎn)共享鏡像時(shí),可上傳鏡像到鏡像倉(cāng)庫(kù)(Registry)以供其他節(jié)點(diǎn)下載。

Docker還提供了容器存儲(chǔ)和網(wǎng)絡(luò)映射到宿主機(jī)的功能,大部分由containerd實(shí)現(xiàn)。應(yīng)用的數(shù)據(jù)可以被保存在容器的私有文件系統(tǒng)里面,這部分?jǐn)?shù)據(jù)會(huì)隨著容器一起被刪除。對(duì)需要數(shù)據(jù)持久化的有狀態(tài)應(yīng)用來(lái)說(shuō),可用數(shù)據(jù)卷Volume的方式導(dǎo)入宿主機(jī)上的文件目錄到容器中,對(duì)該目錄的所有寫(xiě)操作都將被保存到宿主機(jī)的文件系統(tǒng)中。Docker可以把容器內(nèi)的網(wǎng)絡(luò)映射到宿主機(jī)的網(wǎng)絡(luò)上,并且可以連接外部網(wǎng)絡(luò)。

CRI和CRI-O

Kubernetes是當(dāng)今主流的容器編排平臺(tái),為了適應(yīng)不同場(chǎng)景的需求,Kubernetes需要有使用不同容器運(yùn)行時(shí)的能力。為此,Kubernetes從1.5版本開(kāi)始,在kubelet中增加了一個(gè)容器運(yùn)行時(shí)接口CRI(Container Runtime Interface),需要接入Kubernetes的容器運(yùn)行時(shí)必須實(shí)現(xiàn)CRI接口。由于kubelet的任務(wù)是管理本節(jié)點(diǎn)的工作負(fù)載,需要有鏡像管理和運(yùn)行容器的能力,因此只有高層容器運(yùn)行時(shí)才適合接入CRI。CRI和容器運(yùn)行時(shí)的關(guān)系如下圖所示。

CRI和容器運(yùn)行時(shí)之間需要有個(gè)接口層,通常稱之為shim(墊片),用以匹配相應(yīng)的容器運(yùn)行時(shí)。CRI接口由shim實(shí)現(xiàn),定義如下,分為RuntimeService和ImageServiceManager(代碼參見(jiàn)GitHub上kubernetes/cri-api的項(xiàng)目文件“pkg/apis/services.go”):

 

  1. // RuntimeService接口必須由容器運(yùn)行時(shí)實(shí)現(xiàn) 
  2. // 以下方法必須是線程安全的 
  3. type RuntimeService interface { 
  4. RuntimeVersioner 
  5. ContainerManager 
  6. PodSandboxManager 
  7. ContainerStatsManager 
  8.  
  9. // UpdateRuntimeConfig更新運(yùn)行時(shí)配置 
  10. UpdateRuntimeConfig(runtimeConfig *runtimeapi.RuntimeConfig) error 
  11.  
  12. // Status返回運(yùn)行時(shí)的狀態(tài) 
  13. Status() (*runtimeapi.RuntimeStatus, error) 
  14.  
  15. // ImageManagerService接口必須由容器管理器實(shí)現(xiàn) 
  16. // 以下方法必須是線程安全的 
  17. type ImageManagerService interface { 
  18. // ListImages列出現(xiàn)有鏡像 
  19. ListImages(filter *runtimeapi.ImageFilter) ([]*runtimeapi.Image, error) 
  20.  
  21. // ImageStatus返回鏡像狀態(tài) 
  22. ImageStatus(image *runtimeapi.ImageSpec) (*runtimeapi.Image, error) 
  23.  
  24. // PullImage用認(rèn)證配置拉取鏡像 
  25. PullImage(image *runtimeapi.ImageSpec, auth *runtimeapi.AuthConfig, podSandboxConfig *runtimeapi.PodSandboxConfig) (string, error) 
  26.  
  27. // RemoveImage刪除鏡像 
  28. RemoveImage(image *runtimeapi.ImageSpec) error 
  29.  
  30. // ImageFsInfo返回存儲(chǔ)鏡像的文件系統(tǒng)信息 
  31. ImageFsInfo() ([]*runtimeapi.FilesystemUsage, error) 
  32. }  

Docker運(yùn)行時(shí)被普遍使用,它的CRI shim被稱為dockershim,內(nèi)置在Kubernetes的kubelet中,由Kubernetes項(xiàng)目組開(kāi)發(fā)和維護(hù)。其他運(yùn)行時(shí)則需要提供外置的shim。containerd從1.1版本開(kāi)始內(nèi)置了CRI plugin,不再需要外置shim來(lái)轉(zhuǎn)發(fā)請(qǐng)求,因此效率更高。在安裝Docker的最新版本時(shí),會(huì)自動(dòng)安裝containerd,所以在一些系統(tǒng)中,Docker和Kubernetes可以同時(shí)使用containerd來(lái)運(yùn)行容器,但是二者的鏡像用了命名空間隔離,彼此是獨(dú)立的,即鏡像不可以共用。因?yàn)镈ocker和containerd常常同時(shí)存在,因此在不需要使用Docker的系統(tǒng)中只安裝containerd即可。

containerd最早是為Docker設(shè)計(jì)的代碼,包含一些用戶相關(guān)的功能。相比之下,CRI-O是替代Docker或者containerd的高效且輕量級(jí)的容器運(yùn)行時(shí)方案,是CRI的一個(gè)實(shí)現(xiàn),能夠運(yùn)行符合OCI規(guī)范的容器,所以被稱為CRI-O。CRI-O是原生為生產(chǎn)系統(tǒng)運(yùn)行容器設(shè)計(jì)的,有個(gè)簡(jiǎn)單的命令行工具供測(cè)試用,但并不能進(jìn)行容器管理。CRI-O支持OCI的容器鏡像格式,可以從容器鏡像倉(cāng)庫(kù)中下載鏡像。CRI-O支持runC和Kata Containers這兩種低層容器運(yùn)行時(shí)。

責(zé)任編輯:未麗燕 來(lái)源: Dockone.io
相關(guān)推薦

2010-08-20 13:29:33

OFDM

2021-02-08 21:40:04

SockmapBPF存儲(chǔ)

2012-01-12 14:37:34

jQuery

2013-04-07 14:09:55

Android應(yīng)用基本

2020-03-21 14:57:14

手機(jī)定位智能手機(jī)APP

2009-02-24 09:43:00

IP電話原理

2019-04-30 08:15:31

2011-11-29 12:17:00

2010-03-17 13:35:02

2019-11-28 10:45:28

ZooKeeper源碼分布式

2016-08-18 00:04:09

網(wǎng)絡(luò)爬蟲(chóng)抓取系統(tǒng)服務(wù)器

2016-08-17 23:53:29

網(wǎng)絡(luò)爬蟲(chóng)抓取系統(tǒng)

2013-09-22 14:02:09

內(nèi)存數(shù)據(jù)庫(kù)

2009-12-22 15:39:36

IPPBX技術(shù)

2010-06-18 17:28:37

Linux Anacr

2009-06-11 09:56:09

MySQL Repli原理

2011-07-07 14:10:21

Cocoa 內(nèi)省 hash

2020-12-29 16:55:44

ZooKeeper運(yùn)維數(shù)據(jù)結(jié)構(gòu)

2010-03-18 20:13:03

Java socket

2011-07-07 14:46:10

Cocoa Xcode
點(diǎn)贊
收藏

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

亚洲精品国偷自产在线99热| www.亚洲在线| 在线成人一区二区| 久国产精品视频| 国产白丝在线观看| 26uuu国产日韩综合| 国产精品亚洲欧美导航| 激情视频在线播放| 色老板在线视频一区二区| 欧美日韩国产乱码电影| 国产青草视频在线观看| 久热av在线| 国产一区二区三区精品欧美日韩一区二区三区 | 最新国产拍偷乱拍精品| 亚洲综合色视频| 美女视频久久| 国产免费的av| 巨乳诱惑日韩免费av| 中文字幕日韩电影| 一级国产黄色片| 国产高清日韩| 在线看不卡av| 欧美一级视频免费看| 麻豆视频在线免费观看| 久久综合色一综合色88| 97视频中文字幕| 曰批又黄又爽免费视频| 欧美亚洲视频| 久久人人爽人人| 99鲁鲁精品一区二区三区| 自拍视频一区| 亚洲国产精品久久久久久| 国产大片一区二区三区| 777午夜精品电影免费看| 亚洲不卡av一区二区三区| www亚洲国产| 国产黄在线观看免费观看不卡| 成人激情文学综合网| 91黄色精品| 中文字幕 视频一区| 视频一区二区不卡| 欧美一二三视频| 久久狠狠高潮亚洲精品| 悠悠资源网久久精品| 欧美精品一二区| 99久久99久久精品国产| 日韩毛片视频| 中文字幕一精品亚洲无线一区| 尤物yw午夜国产精品视频| 9久久婷婷国产综合精品性色| 日本不卡网站| 欧美日韩国产一区二区| 人妻久久久一区二区三区| 在线网址91| 一区二区三区中文字幕电影| 国产盗摄视频在线观看| 黄在线免费观看| 亚洲视频一区二区在线观看| 成年人免费观看的视频| 欧美jizzhd69巨大| 国产精品国产三级国产专播品爱网 | 欧美这里只有精品| 日本三级在线观看网站| 亚洲一区在线观看视频| av免费看网址| 一区二区三区四区日本视频| 欧美性xxxx18| 污污视频网站免费观看| 91av一区| 日韩一区国产二区欧美三区| 亚洲v在线观看| 久久影院资源站| 亚洲欧美一区二区三区情侣bbw | 欧美美女一级片| 成人污污视频| 精品电影一区二区三区 | 日本国产精品| 在线观看视频亚洲| 国产美女福利视频| 在线成人亚洲| 日韩av大片免费看| 91国产免费视频| 懂色av一区二区三区免费看| 久久久久久国产精品免费免费| 亚洲不卡1区| 久久久久久久久久久97| 亚洲人成在线影院| 热久久99这里有精品| 亚洲天堂一二三| 国产精品88888| 蜜桃在线一区二区三区精品| 1769在线观看| 夜夜精品浪潮av一区二区三区| 1024av视频| 青草综合视频| 日韩欧美电影一二三| 成人做爰69片免费| 免费一区二区| 欧美精品在线第一页| 91浏览器在线观看| 久久99精品国产.久久久久| 国产日韩精品一区观看| 在线观看麻豆蜜桃| 午夜视频在线观看一区| 孩娇小videos精品| 里番精品3d一二三区| 日日噜噜噜夜夜爽亚洲精品| 日韩乱码在线观看| 国产综合久久久久影院| 精品在线不卡| 日本不卡不卡| 日本高清无吗v一区| 日本少妇一级片| 日韩精品一区二区久久| 亚洲图色一区二区三区| 欧美一区二区视频免费观看| 中文字幕在线永久| 99久久www免费| 国产ts人妖一区二区三区| 亚洲AV无码精品国产| 中文在线免费一区三区高中清不卡| 免费毛片网站在线观看| 中文字幕综合| 深夜福利91大全| 欧美三级一区二区三区| 国产成人99久久亚洲综合精品| 亚洲国产一区在线| 成人私拍视频| 亚洲精品久久久久久久久| 欧美黄片一区二区三区| 久久成人免费日本黄色| 日韩av电影免费观看| 国产夫妻在线播放| 欧美xingq一区二区| 在线观看天堂av| 日韩1区2区3区| 久久精品久久精品国产大片| 国精一区二区三区| 日韩午夜精品电影| 国产日韩欧美在线观看视频| 国产综合色产在线精品| 亚洲伊人婷婷| 欧美黄页免费| 日韩小视频网址| 一二三四区在线| 中文字幕一区二区三区精华液 | 日韩精品成人在线| 国产成人亚洲精品狼色在线| 国产香蕉一区二区三区| 9999在线精品视频| 久久亚洲精品网站| 91牛牛免费视频| 无码人妻丰满熟妇奶水区码| 91美女片黄在线| 日日碰狠狠添天天爽超碰97| 久久99精品国产自在现线| 欧美疯狂做受xxxx高潮| 亚洲精品久久久蜜桃动漫| 一区二区三区欧美激情| xxxxwww一片| 亚洲国产网站| 久久久久久久有限公司| 黄色成人免费网| 在线观看国产成人av片| 精品乱码一区内射人妻无码| 国产精品久久精品日日| 操人视频免费看| 合欧美一区二区三区| 国产伦精品一区二区三区视频免费 | 亚洲啊v在线免费视频| 欧美成人精品激情在线观看| 丰满肥臀噗嗤啊x99av| 亚洲成人一二三| 人妻熟女aⅴ一区二区三区汇编| 亚洲一区欧美激情| 亚洲欧美日产图| 日本在线成人| 26uuu另类亚洲欧美日本老年| 韩国中文免费在线视频| 欧美精品久久久久久久多人混战 | 免费国产自线拍一欧美视频| 日韩高清国产精品| 91视频亚洲| 久久久最新网址| 国产午夜视频在线观看| 91精品国产91久久综合桃花| 国产午夜福利片| 欧美国产一区在线| 三上悠亚 电影| 久久激情一区| 5278欧美一区二区三区| 亚洲精品第三页| 欧美精品国产| 日韩动漫在线观看| 亚洲精品视频一二三区| 日韩av片免费在线观看| 成人免费看片| 亚洲精品综合久久中文字幕| 国产精品视频a| 欧美小视频在线观看| 久久高清内射无套| 久久久久高清精品| 国产精品99精品无码视亚| 久久xxxx精品视频| 欧美xxxx黑人又粗又长密月| 久久99成人| 国产精品久久久久福利| av日韩国产| 麻豆成人在线看| 国产高清一区在线观看| 亚洲黄色在线看| 国产成人精品亚洲精品色欲| 欧美羞羞免费网站| 在线观看国产亚洲| 亚洲九九爱视频| 久久久精品少妇| 久久久久久黄色| 一级国产黄色片| 丁香五精品蜜臀久久久久99网站 | 你懂的国产视频| 一区二区三区在线影院| 国产免费裸体视频| 午夜福利理论片在线观看| 91麻豆精品国产91久久久久| 性高潮视频在线观看| 欧美日韩国产精品| 久久久香蕉视频| 亚洲欧美乱综合| 欧美视频一区二区在线| 国产亲近乱来精品视频| 一区二区三区免费在线观看视频 | 国产传媒在线播放| 中文字幕日韩av综合精品| 好男人免费精品视频| 亚洲欧洲午夜一线一品| 色哟哟在线观看| 亚洲男女性事视频| 无码精品黑人一区二区三区 | 国产高清一级毛片在线不卡| 亚洲男人av电影| 日韩精品福利| 亚洲欧美国产精品久久久久久久 | 国产精品tv| 国产一区不卡在线观看| 国产精品jk白丝蜜臀av小说| 岛国视频一区| 老汉色老汉首页av亚洲| 久久国产精品精品国产色婷婷| 免费观看成人www动漫视频| 亚洲电影第三页| 日本福利视频在线| 99视频精品| 欧美日韩亚洲第一| 日韩成人一区二区| 色婷婷综合网站| 韩国成人精品a∨在线观看| 精品亚洲视频在线| 国产精品69久久久久水密桃| 韩国三级hd中文字幕有哪些| 粉嫩久久99精品久久久久久夜 | 国产美女撒尿一区二区| 国产美女精品在线观看| 日韩欧美在线精品| 欧美日韩在线高清| 欧美偷拍自拍| 日本黄网站色大片免费观看| 精品动漫3d一区二区三区免费| 99视频在线免费播放| 美女黄网久久| 99sesese| 成人黄色av网站在线| 97伦伦午夜电影理伦片| 国产欧美日产一区| 手机在线免费看片| 亚洲一区av在线| 永久免费无码av网站在线观看| 欧美性色aⅴ视频一区日韩精品| 一道本无吗一区| 亚洲国产日韩欧美在线99| 国产在线一二三区| 久久精品国产91精品亚洲| jizz一区二区三区| 国产成人精品视频在线观看| 国产精品igao视频网网址不卡日韩| 国产高清精品一区二区| 国产一区二区三区四区二区| 免费久久久久久| 亚洲专区免费| 99999精品| 久久久精品国产免费观看同学| 91高清免费看| 色综合久久中文字幕综合网| 99这里有精品视频| 香蕉久久夜色精品国产| 国产高清自拍一区| 欧美日韩黑人| 日本午夜激情视频| 久久成人免费电影| www.超碰97| 亚洲乱码中文字幕| 无码免费一区二区三区| 精品少妇一区二区三区在线播放 | 在线黄色免费观看| 99久久婷婷国产综合精品电影| 无码人中文字幕| 疯狂做受xxxx高潮欧美日本| 国产高清不卡视频| 在线观看国产欧美| 日韩理论视频| 成人91视频| 久久久五月天| 国产一二三区av| 97精品久久久久中文字幕| 日韩影院一区二区| 欧美三级电影网站| 青青久草在线| 久久久午夜视频| 国产麻豆精品| 亚洲午夜精品久久| 首页综合国产亚洲丝袜| 国产麻豆xxxvideo实拍| 一区二区三区免费看视频| 亚洲影视一区二区| 国产亚洲欧美另类中文| 婷婷电影在线观看| 国产二区一区| 韩国精品一区二区三区| 亚洲天堂国产视频| 欧美经典三级视频一区二区三区| 国产精品100| 精品亚洲国产视频| 9999热视频在线观看| caoporn国产精品免费公开| 99久久这里只有精品| 在线观看国产一级片| 国产精品私人影院| 午夜一级黄色片| 国产一区二区三区网站| 成人软件在线观看| 免费观看成人高| 丝袜a∨在线一区二区三区不卡| 强伦人妻一区二区三区| 疯狂欧美牲乱大交777| 亚洲三级中文字幕| 清纯唯美亚洲综合| 国产精品亚洲二区| 国产视频一区二区视频| 日本一区二区三区高清不卡| 欧美激情一区二区三区免费观看| 伊人成人开心激情综合网| 777午夜精品电影免费看| 亚洲欧洲精品一区二区三区波多野1战4| 日本中文字幕一区| 国产jizz18女人高潮| 欧美精品乱人伦久久久久久| 50度灰在线| 国产偷国产偷亚洲高清97cao| 亚洲美女91| 免费在线观看你懂的| 欧美色网站导航| 免费的黄网站在线观看| 97se在线视频| 亚洲一区二区网站| 无码人妻aⅴ一区二区三区69岛| 欧美亚洲一区二区在线| 丰满少妇久久久| 成人一区二区三区中文字幕| 免费看日韩毛片| 在线看日韩av| 久久久久九九精品影院| 日本一本中文字幕| 26uuu亚洲综合色欧美| 亚洲s码欧洲m码国产av| 视频在线观看一区二区| 亚洲专区**| 国产福利视频在线播放| 国产精品久久久爽爽爽麻豆色哟哟| 国产男男gay体育生白袜| 午夜精品久久久久久久99热| 红桃成人av在线播放| 日本高清免费在线视频| 亚洲va欧美va人人爽| 91精品国产91久久久久游泳池 | 卡通动漫精品一区二区三区| 黄色三级视频片| 亚洲精品久久嫩草网站秘色| 天堂a中文在线| 91久久久久久| 美女日韩在线中文字幕| 亚洲精品卡一卡二| 亚洲国产天堂网精品网站| 国产福利91精品一区二区| 日本精品久久久久久久久久| 久久久久国色av免费看影院| 97视频免费在线| 91精品国产成人www| 欧洲乱码伦视频免费| 在线观看一区二区三区四区| 欧美亚洲一区二区在线| 都市激情国产精品|