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

容器技術

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

先不要著急,通過《Docker簡介》的章節(jié)介紹,相信我們已經(jīng)對 Docker 有了初步的了解。但是回想下我們過往的學習經(jīng)歷,每當接觸一個新的技術時,總會有一種陌生感,這個感覺主要來源于我們對這門新技術的基礎概念沒有認知,或者是理解得不夠準確。這種陌生感可能會導致兩個問題:

  • 在學習過程中喪失樂趣和成就感;
  • 對將來的深入學習造成障礙。

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

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

1. 容器技術的歷史

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

2. 容器技術與虛擬化

容器技術其實是一種基于虛擬化的沙盒技術。

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

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

我們舉一些常見的例子:

  • 平臺虛擬化

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

  • 資源虛擬化

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

  • 應用程序虛擬化

應用程序虛擬化的一個最典型的應用就是 JAVA,生成的程序在指定的 JVM 虛擬機中運行。

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

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

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

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

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

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

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

4. 小結(jié)

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

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