第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

容器技術(shù)

在前面的章節(jié)里,我們安裝了 Linux,也安裝了 Docker,接下來(lái)是不是該上手 Docker 的使用了呢?

先不要著急,通過(guò)《Docker簡(jiǎn)介》的章節(jié)介紹,相信我們已經(jīng)對(duì) Docker 有了初步的了解。但是回想下我們過(guò)往的學(xué)習(xí)經(jīng)歷,每當(dāng)接觸一個(gè)新的技術(shù)時(shí),總會(huì)有一種陌生感,這個(gè)感覺(jué)主要來(lái)源于我們對(duì)這門新技術(shù)的基礎(chǔ)概念沒(méi)有認(rèn)知,或者是理解得不夠準(zhǔn)確。這種陌生感可能會(huì)導(dǎo)致兩個(gè)問(wèn)題:

  • 在學(xué)習(xí)過(guò)程中喪失樂(lè)趣和成就感;
  • 對(duì)將來(lái)的深入學(xué)習(xí)造成障礙。

要排除這種陌生感,就一定要把最核心的基礎(chǔ)搞明白,心急是吃不了熱豆腐的。

我們知道 Docker 是一個(gè)開(kāi)源的容器引擎,它的核心是容器技術(shù)。那么容器技術(shù)到底是什么呢?這一節(jié)我們就一起來(lái)了解下。

1. 容器技術(shù)的歷史

2000 年,隨著 FreeBSD 4.0 的發(fā)布,容器技術(shù)正式對(duì)外公開(kāi),這種技術(shù)可將 FreeBSD 系統(tǒng)分區(qū)為多個(gè)子系統(tǒng),稱為 Jail。Jail 是作為安全環(huán)境而開(kāi)發(fā)的,Jail 的目的是讓進(jìn)程在經(jīng)過(guò)修改的 chroot 環(huán)境中創(chuàng)建,而不會(huì)脫離和影響整個(gè)系統(tǒng),在 chroot 環(huán)境中,已經(jīng)對(duì)文件系統(tǒng)、網(wǎng)絡(luò)和用戶的訪問(wèn)都實(shí)現(xiàn)了虛擬化。2001 年,借助 VServer 項(xiàng)目,容器技術(shù)進(jìn)入了 Linux。這項(xiàng)工作的目的是在高度獨(dú)立且安全的單一環(huán)境中運(yùn)行多個(gè) Linux 服務(wù)器,之后 Linux 容器技術(shù)開(kāi)始逐漸成形。

2. 容器技術(shù)與虛擬化

容器技術(shù)其實(shí)是一種基于虛擬化的沙盒技術(shù)。

沙盒(sandbox)是一種安全機(jī)制,為運(yùn)行中的程序提供隔離環(huán)境。通常是作為一些來(lái)源不可信、具破壞力或無(wú)法判定程序意圖的程序提供實(shí)驗(yàn)之用。

在計(jì)算機(jī)中,虛擬化是一種資源管理的技術(shù),它將計(jì)算機(jī)的各種實(shí)體資源,如CPU、網(wǎng)絡(luò)、內(nèi)存及存儲(chǔ)等,進(jìn)行抽象后展示出來(lái),使用戶更方便地使用這些資源。

我們舉一些常見(jiàn)的例子:

  • 平臺(tái)虛擬化

平臺(tái)虛擬化是針對(duì)計(jì)算機(jī)和操作系統(tǒng)的虛擬化,也就是最常見(jiàn)的一種虛擬化技術(shù),Hyper-V,Virtualbox,VMware 等產(chǎn)品都是應(yīng)用這類虛擬化技術(shù)。

  • 資源虛擬化

資源虛擬化是指對(duì)特定的計(jì)算機(jī)系統(tǒng)資源的虛擬化,例如對(duì)內(nèi)存、網(wǎng)絡(luò)資源等等。

  • 應(yīng)用程序虛擬化

應(yīng)用程序虛擬化的一個(gè)最典型的應(yīng)用就是 JAVA,生成的程序在指定的 JVM 虛擬機(jī)中運(yùn)行。

那么容器技術(shù)屬于哪一種虛擬化呢?

現(xiàn)在的容器技術(shù),運(yùn)行在操作系統(tǒng)之上,使用操作系統(tǒng)自身支持的機(jī)制(Namespace,CGroup,下面的章節(jié)會(huì)詳細(xì)講解),提供了相對(duì)獨(dú)立的應(yīng)用程序運(yùn)行的環(huán)境,能夠讓?xiě)?yīng)用程序間可以互不干擾地獨(dú)立運(yùn)行,也提供了資源控制的功能,能對(duì)其在運(yùn)行中所使用的資源進(jìn)行干預(yù),可以理解為操作系統(tǒng)虛擬化的范疇。

3. 容器技術(shù)的實(shí)質(zhì)

假定我們編寫(xiě)了一個(gè)批量運(yùn)算加法的程序,這個(gè)程序的輸入需要從一個(gè)文件 A 中讀取,處理結(jié)果保存到另一個(gè)文件 B 中。當(dāng)操作系統(tǒng)執(zhí)行這個(gè)加法程序時(shí),操作系統(tǒng)會(huì)根據(jù)程序的指引,從文件 A 中讀取數(shù)據(jù),保存到內(nèi)存里,然后執(zhí)行加法指令,CPU 與內(nèi)存協(xié)作,完成了運(yùn)算,將結(jié)果保存到 B 中。

在程序的運(yùn)行過(guò)程中,計(jì)算機(jī)內(nèi)存的數(shù)據(jù),CPU 寄存器里的數(shù)據(jù),內(nèi)存堆棧中的指令,讀取寫(xiě)入的文件,以及運(yùn)行過(guò)程中計(jì)算機(jī)的狀態(tài),這些信息的集合,就是進(jìn)程。

對(duì)于進(jìn)程來(lái)說(shuō),它的靜止態(tài)就是一個(gè)二進(jìn)制可執(zhí)行文件,它的運(yùn)行態(tài)就是與它相關(guān)的計(jì)算機(jī)數(shù)據(jù)和狀態(tài)的總和。而子進(jìn)程的所有資源都繼承父進(jìn)程,只要控制住父進(jìn)程的資源,通過(guò)父進(jìn)程衍生的子進(jìn)程也會(huì)被控制。

所以,簡(jiǎn)單來(lái)說(shuō)容器技術(shù)的實(shí)質(zhì)就是:通過(guò)各種手段,修改、約束一個(gè)"容器”進(jìn)程的運(yùn)行狀態(tài),按照用戶的意圖“誤導(dǎo)”它能看到的資源,控制它的邊界,從而達(dá)到環(huán)境隔離,或者說(shuō)虛擬化的目的。

4. 小結(jié)

本節(jié)的內(nèi)容可能有些抽象,別擔(dān)心,到這里還不需要大家理解容器具體內(nèi)容,本節(jié)最大的意義在于告訴大家以下兩點(diǎn):

  1. 不要把 Docker 的概念與容器技術(shù)概念混淆,他們并不是等價(jià)的;
  2. 容器的本質(zhì)是一個(gè)進(jìn)程。