久久99久久人婷婷精品综合_超碰aⅴ人人做人人爽欧美_亚洲电影第三页_日韩欧美一中文字暮专区_波多野结衣的一区二区三区_婷婷在线播放_人人视频精品_国产精品日韩精品欧美精品_亚洲免费黄色_欧美性猛交xxxxxxxx

掌握這些Docker原理知識(shí),出去吹牛逼再也不擔(dān)心了

2022-10-08    分類(lèi): 網(wǎng)站建設(shè)

在現(xiàn)代的開(kāi)發(fā)流程中隨處可見(jiàn) Docker 的身影,Docker 提供了環(huán)境隔離、應(yīng)用打包等功能讓服務(wù)部署變得特別簡(jiǎn)單,本文將會(huì)淺析 Docker 背后所使用的技術(shù),閱讀完后,你可以搞清楚如下問(wèn)題:

容器與虛擬機(jī)之間的差別 Docker 資源隔離的原理 Docker 資源限制的原理 Docker 分層結(jié)構(gòu)的原理

容器 vs 虛擬機(jī)

虛擬機(jī)(VM)是計(jì)算機(jī)系統(tǒng)的仿真器,通過(guò)軟件模擬具有完整硬件系統(tǒng)功能的、運(yùn)行在一個(gè)完全隔離環(huán)境中的完整計(jì)算機(jī)系統(tǒng),能提供物理計(jì)算機(jī)的功能。

虛擬機(jī)通過(guò)在當(dāng)前的真實(shí)操作系統(tǒng)上通過(guò) Hypervisor 技術(shù)進(jìn)行虛擬機(jī)運(yùn)行環(huán)境與體系的建立并通過(guò)該技術(shù)進(jìn)行資源控制,一個(gè)性能較好的物理機(jī)通常可以承載多個(gè)虛擬機(jī),每個(gè)虛擬機(jī)都會(huì)有自己操作系統(tǒng),如圖 1.1 所示。

掌握這些 Docker 原理知識(shí),出去吹牛逼再也不擔(dān)心了

從圖中可以看出,虛擬機(jī)提供了物理機(jī)硬件級(jí)別的操作系統(tǒng)隔離,這讓不同虛擬機(jī)之間的隔離很徹底,但也需要消耗更多資源,而有時(shí)不需要這么徹底的隔離,而更希望不消耗那么多資源,此時(shí)就可以使用容器技術(shù)。

容器可以提供操作系統(tǒng)級(jí)別的進(jìn)程隔離,以 Docker 為例,當(dāng)我們運(yùn)行 Docker 容器時(shí),此時(shí)容器本身只是操作系統(tǒng)中的一個(gè)進(jìn)程,只是利用操作系統(tǒng)提供的各種功能實(shí)現(xiàn)了進(jìn)程間網(wǎng)絡(luò)、空間、權(quán)限等隔離,讓多個(gè) Docker 容器進(jìn)程相互不知道彼此的存在,如圖 1.2 所示。

掌握這些 Docker 原理知識(shí),出去吹牛逼再也不擔(dān)心了

虛擬機(jī)技術(shù)與容器技術(shù)的大區(qū)別在于:多個(gè)虛擬機(jī)使用多個(gè)操作系統(tǒng)內(nèi)核,而多個(gè)容器共享宿主機(jī)操作系統(tǒng)內(nèi)核。

Docker 資源隔離:Linux Namespace

Linux Namespace(Linux 命名空間)是 Linux 內(nèi)核(Kernel)提供的功能,它可以隔離一系列的系統(tǒng)資源,如 PID(進(jìn)程 ID,Process ID)、User ID、Network、文件系統(tǒng)等。

如果你熟悉 Linux,你可能會(huì)聯(lián)想到 linux 中的 chroot 命令,該命令允許將當(dāng)前目錄修改成根目錄(即根目錄 / 的掛載點(diǎn)切換了),相當(dāng)于文件系統(tǒng)被隔離了,Namespace 也具有相似的功能,但更加強(qiáng)大。

目前 Linux 主要提供 6 種不同類(lèi)型的 Namespace,如下表所示。

掌握這些 Docker 原理知識(shí),出去吹牛逼再也不擔(dān)心了

以一個(gè)具體的例子來(lái)解釋 Namespace 的作用,假設(shè)你有一臺(tái)性能非常好的計(jì)算機(jī),你向用戶(hù)出售自己的計(jì)算機(jī)的資源,每個(gè)用戶(hù)買(mǎi)到一個(gè) ssh 實(shí)例,為了避免不同客戶(hù)之間相互干擾,你可能會(huì)對(duì)不同用戶(hù)進(jìn)行權(quán)限限制,讓用戶(hù)只能訪(fǎng)問(wèn)自己 ssh 實(shí)例下的資源。

但有些操作需要 root 權(quán)限,而我們不能將 root 權(quán)限提供給用戶(hù),此時(shí)就可以使用 Namespae 了,通過(guò) User Namespace 對(duì) UID 進(jìn)行隔離,具體而言,UID 為 x 的用戶(hù)在該 Namespace 中具有 root 權(quán)限,但在真實(shí)物理機(jī)中,他依舊是 UID 為 x 的用戶(hù),這就解決了用戶(hù)間隔離的問(wèn)題。

此外還可以通過(guò) PID Namespace 對(duì) PID 進(jìn)行隔離,從該 Namespace 中的用戶(hù)角度看,Namespace 中就像一臺(tái)新的 Linux,有自己的 init 進(jìn)程(初始進(jìn)程,PID 為 1),其他進(jìn)程的 PID 在 init 進(jìn)程 PID 上遞增,如圖 1.3 所示。

掌握這些 Docker 原理知識(shí),出去吹牛逼再也不擔(dān)心了

圖中,進(jìn)程 3 在父命名空就中 PID 為 3,而在子命名空間中,其 PID 為 1,用戶(hù)在該子命名空間中內(nèi)看進(jìn)程 3 就像 init 進(jìn)程一樣。

Linux 提供了 3 個(gè)系統(tǒng) API 方便我們使用 Namespace:

clone () 創(chuàng)建新進(jìn)程,根據(jù)系統(tǒng)調(diào)用 flags 來(lái)決定哪種類(lèi)型 Namespace 將會(huì)被創(chuàng)建,而該進(jìn)程的子進(jìn)程也會(huì)包含這些 Namespace。

setns () 將進(jìn)程加入到已存在的 Namespace 中。

unshare () 將進(jìn)程移出某個(gè) Namespace

Docker 利用 Linux Namespace 功能實(shí)現(xiàn)多個(gè) Docker 容器相互隔離,具有獨(dú)立環(huán)境的功能,Go 語(yǔ)言對(duì) Namespce API 進(jìn)行了相應(yīng)的封裝,從 Docker 源碼中可以看到相關(guān)的實(shí)現(xiàn)。

掌握這些 Docker 原理知識(shí),出去吹牛逼再也不擔(dān)心了

Docker 資源限制:Linux Cgroups

Docker 通過(guò) Linux Namespace 幫進(jìn)程隔離出自己?jiǎn)为?dú)的空間 / 資源,那 Docker 如何限制進(jìn)程對(duì)這些資源的使用呢?

Docker 容器本質(zhì)依舊是一個(gè)進(jìn)程,多個(gè) Docker 容器運(yùn)行時(shí),如果其中一個(gè) Docker 進(jìn)程占用大量 CPU 和內(nèi)存就會(huì)導(dǎo)致其他 Docker 進(jìn)程響應(yīng)緩慢,為了避免這種情況,可以通過(guò) Linux Cgroups 技術(shù)對(duì)資源進(jìn)行限制。

Linux Cgroups(Linux Contorl Groups,簡(jiǎn)稱(chēng) Cgroups)可以對(duì)一組進(jìn)程及這些進(jìn)程的子進(jìn)程進(jìn)行資源限制、控制和統(tǒng)計(jì)的能力,其中包括 CPU、內(nèi)存、存儲(chǔ)、網(wǎng)絡(luò)、設(shè)備訪(fǎng)問(wèn)權(quán)限等,通過(guò) Cgroups 可以很輕松的限制某個(gè)進(jìn)程的資源占用并且統(tǒng)計(jì)該進(jìn)程的實(shí)時(shí)使用情況。

Cgroups 由 3 個(gè)組件構(gòu)成,分別是 cgroup(控制組)、subsystem(子系統(tǒng))以及 hierarchy(層級(jí)樹(shù)),3 者相互協(xié)同作用。

cgroup 是對(duì)進(jìn)程分組管理的一種機(jī)制,一個(gè) cgroup 通常包含一組(多個(gè))進(jìn)程,Cgroups 中的資源控制都以 cgroup 為單位實(shí)現(xiàn)。

subsystem 是一組(多個(gè))資源控制的模塊,每個(gè) subsystem 會(huì)管理到某個(gè) cgroup 上,對(duì)該 cgroup 中的進(jìn)程做出相應(yīng)的限制和控制。

hierarchy 會(huì)將一組(多個(gè))cgroup 構(gòu)建成一個(gè)樹(shù)狀結(jié)構(gòu),Cgropus 可以利用該結(jié)構(gòu)實(shí)現(xiàn)繼承等功能

3 這具體如何相互協(xié)同作用?

Cgroups 會(huì)將系統(tǒng)進(jìn)程分組(cgroup)然后通過(guò) hierachy 構(gòu)建成獨(dú)立的樹(shù),樹(shù)的節(jié)點(diǎn)就是 cgroup(進(jìn)程組),每顆樹(shù)都可以與一個(gè)或多個(gè) subsystem 關(guān)聯(lián),subsystem 會(huì)對(duì)樹(shù)中對(duì)應(yīng)的組進(jìn)行操作。

有個(gè)幾個(gè)規(guī)則需要注意。

1. 一個(gè) subsystem 只能附加到一個(gè) hierarchy,而一個(gè) hierarchy 可以附加多個(gè) subsystem 2. 一個(gè)進(jìn)程可以作為多個(gè) cgroup 的成員,但這些 cgroup 只能在不同的 hierarchy 中 3. 一個(gè)進(jìn)程 fork 出子進(jìn)程,此時(shí)子進(jìn)程與父進(jìn)程默認(rèn)是在同一個(gè) cgroup 中,可以根據(jù)需要移動(dòng)到其他 cgroup

掌握這些 Docker 原理知識(shí),出去吹牛逼再也不擔(dān)心了

Docker 分層結(jié)構(gòu):Union File System

我們都知道 Docker 鏡像是一種分層結(jié)構(gòu),每一層構(gòu)建在其他層之上,從而實(shí)現(xiàn)增量增加內(nèi)容的功能,這是如何實(shí)現(xiàn)的?

要理解這個(gè)問(wèn)題,首先需要理解 Union File System(簡(jiǎn)稱(chēng),UnionFS),它是為 Linux 系統(tǒng)設(shè)計(jì)的將其他文件系統(tǒng)聯(lián)合到一個(gè)聯(lián)合掛載點(diǎn)的文件系統(tǒng)服務(wù)。UnionFS 使用 branch(分支)將不同文件系統(tǒng)的文件和目錄透明地疊加覆蓋,形成一個(gè)單一一致的文件系統(tǒng),此外 UnionFS 使用寫(xiě)時(shí)復(fù)制(Copy on Write,簡(jiǎn)稱(chēng),CoW)技術(shù)來(lái)提高合并后文件系統(tǒng)的資源利用。(后續(xù)的文章會(huì)介紹 CoW 技術(shù))

Docker 使用的第一種存儲(chǔ)驅(qū)動(dòng)為 AUFS(Advanced Multi-layered unification filesytem),AUFS 完全重寫(xiě)了早期的 UnionFS,目的是提高其性能與可靠性,此外還引入了如 branch 負(fù)載均衡等新功能。

與 UnionFS 類(lèi)似,AUFS 可以在基礎(chǔ)的文件系統(tǒng)上增量的增加新的文件系統(tǒng),通過(guò)疊加覆蓋的形式最終形成一個(gè)文件系統(tǒng)。通常 AUFS 最上層是可讀可寫(xiě)層,而其他層只是只讀層,每一層都只是一個(gè)普通的文件系統(tǒng)。

Docker 鏡像分層、增量增加等功能正是通過(guò)利用 AUFS 的分層文件系統(tǒng)結(jié)構(gòu)、增量增加等功能實(shí)現(xiàn),這也導(dǎo)致了運(yùn)行 Docker 容器如果沒(méi)有指定 volume(數(shù)據(jù)卷)或 bind mount,則 Docker 容器結(jié)束后,運(yùn)行時(shí)產(chǎn)生的數(shù)據(jù)便丟失了。

Docker 存儲(chǔ)驅(qū)動(dòng)除了 AUFS 外,還有 OverlayFS、Devicemapper、Btrfs、ZFS 等,本文不多討論。

總結(jié)

至此,我們知道了 Docker 核心功能的基本原理,Docker 利用 Linux Namespace 進(jìn)行網(wǎng)絡(luò)、用戶(hù)、進(jìn)程等不同資源的隔離,使用 Linux Cgroups 技術(shù)對(duì)資源的使用進(jìn)行限制與監(jiān)控,通過(guò) AUFS 等存儲(chǔ)驅(qū)動(dòng)實(shí)現(xiàn)分層結(jié)構(gòu)與增量更新等功能。

現(xiàn)實(shí)世界中的 Docker 還使用了很多其他技術(shù),但最核心且最基本的就是 Linux Namespace、Linux Cgrpus 與 AUFS。

Docker 在當(dāng)前的開(kāi)發(fā)流程中已成必備工具,容器帶來(lái)的優(yōu)勢(shì)解放了運(yùn)維人員也避免了開(kāi)發(fā)人員遇到開(kāi)發(fā)環(huán)境與線(xiàn)上環(huán)境不一致時(shí)導(dǎo)致問(wèn)題的情況。目前容器編排技術(shù)(K8s)快速發(fā)展,Docker 容器技術(shù)在未來(lái)也將會(huì)進(jìn)一步發(fā)展,它值得我們花時(shí)間與精力去了解其本質(zhì)。

虛擬機(jī)Docker容器

當(dāng)前文章:掌握這些Docker原理知識(shí),出去吹牛逼再也不擔(dān)心了
網(wǎng)頁(yè)路徑:http://www.js-pz168.com/news12/203662.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化、網(wǎng)站設(shè)計(jì)定制開(kāi)發(fā)搜索引擎優(yōu)化自適應(yīng)網(wǎng)站品牌網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

營(yíng)銷(xiāo)型網(wǎng)站建設(shè)
久久99久久人婷婷精品综合_超碰aⅴ人人做人人爽欧美_亚洲电影第三页_日韩欧美一中文字暮专区_波多野结衣的一区二区三区_婷婷在线播放_人人视频精品_国产精品日韩精品欧美精品_亚洲免费黄色_欧美性猛交xxxxxxxx
高清国产一区二区| 欧美人与物videos另类| 欧美日韩最好看的视频| 欧美中文字幕一区| 久久综合色8888| 亚洲欧美日韩小说| 激情图片小说一区| 国产精品视频一区二区三区经| 亚洲欧美日韩另类精品一区二区三区| 欧美精品精品一区| 综合激情成人伊人| 激情综合色综合久久综合| 不卡视频一区| 在线一区二区三区做爰视频网站| 久久你懂得1024| 视频一区视频二区中文字幕| 成人国产精品免费观看视频| 色噜噜一区二区| 欧美电影免费观看完整版| 一区二区三区在线影院| 国产精品888| 青青影院一区二区三区四区| 欧美一区二区三区人| 亚洲欧美日韩一区二区| 国产成人精品影视| 日韩av一区二区三区在线观看| 91精品国产91久久久久久最新毛片| 亚洲欧洲日韩在线| 国产精品羞羞答答xxdd| 欧美日韩在线高清| 日韩精品中文字幕一区| 天天色天天操综合| 99热最新在线| 欧美日韩国产美| 亚洲精品国产成人久久av盗摄| 福利一区二区在线观看| 五月天色一区| 国产喂奶挤奶一区二区三区| 蜜桃av一区二区| 久久久久久九九| 日韩欧美精品在线视频| 视频一区视频二区中文| 国产嫩草一区二区三区在线观看| 欧美情侣在线播放| 艳妇臀荡乳欲伦亚洲一区| av高清久久久| 日本高清成人免费播放| 亚洲少妇屁股交4| 99久久久国产精品免费蜜臀| 欧美亚洲自拍偷拍| 亚洲精品亚洲人成人网在线播放| 成人免费视频视频在线观看免费 | 欧美精品一区男女天堂| 日本伊人色综合网| 精品一区二区三区自拍图片区 | 一区高清视频| 国产精品久久久久久久久免费樱桃| 国产精品一二三在| 综合操久久久| 亚洲久草在线视频| 999日本视频| 日韩你懂的电影在线观看| 秋霞午夜鲁丝一区二区老狼| 欧美成人第一区| 国产亚洲一二三区| 国产成人精品免费一区二区| 色综合天天综合网国产成人综合天| 成人欧美一区二区三区白人| jvid福利写真一区二区三区| 欧美人与禽zozo性伦| 石原莉奈一区二区三区在线观看| 久久精品国产综合精品| 久久精品一区二区| 国产成人av影院| 欧美日韩国产一级二级| 日韩高清中文字幕一区| 免费在线视频一区| 秋霞毛片久久久久久久久| 国产欧美日本一区二区三区| 丁香天五香天堂综合| 精品视频一区二区不卡| 日韩 欧美一区二区三区| 欧美三级网色| 综合久久国产九一剧情麻豆| 福利视频一区二区三区| 久久久精品一品道一区| 成人福利视频网站| 91精品国产色综合久久不卡蜜臀| 美女网站色91| 色噜噜狠狠色综合中国| 亚洲www啪成人一区二区麻豆 | 日韩久久一区二区| 国产亚洲精品美女久久久m| 久久久99免费| 91麻豆swag| 久久综合久久综合亚洲| 成人av手机在线观看| 欧美成人福利视频| 福利电影一区二区| 日韩欧美一级在线播放| 成人一区二区三区视频| 欧美一激情一区二区三区| 国产精品一二三区在线| 欧美一级日韩不卡播放免费| 国产精品911| 日韩欧美一级片| 成人黄色免费短视频| 2021中文字幕一区亚洲| 91在线一区二区| 久久久激情视频| 成人羞羞视频免费| 一色屋精品亚洲香蕉网站| 久久精品国产精品青草色艺| 亚洲精品国产a| 亚洲视频在线二区| 三级成人在线视频| 日本福利一区二区| 精彩视频一区二区| 欧美一区二区视频网站| 成人午夜短视频| 久久久久久免费| 国产精品一区二区三区不卡| 国产精品伦理一区二区| 欧美福利一区二区三区| 亚洲午夜在线视频| 色久综合一二码| 韩国v欧美v日本v亚洲v| 日韩一级片网站| 1区1区3区4区产品乱码芒果精品| 国产精品网站在线播放| 欧美不卡三区| 日韩激情视频在线观看| 欧美视频在线一区二区三区| 国产精品乡下勾搭老头1| 精品国产乱码久久久久久免费| 99电影在线观看| 亚洲美女屁股眼交3| 亚洲伊人婷婷| 狠狠狠色丁香婷婷综合激情| 欧美电影免费观看高清完整版在| www.久久久| 夜夜精品浪潮av一区二区三区| 一区二区三区在线视频111| 国内外精品视频| 久久免费视频色| 欧美国产综合视频| 日本欧美大码aⅴ在线播放| 4438x成人网最大色成网站| 91视频.com| 亚洲综合在线免费观看| 欧美性极品少妇| 91在线丨porny丨国产| 亚洲三级在线看| 在线看国产日韩| www.亚洲在线| 亚洲日本一区二区三区| 色婷婷av一区二区三区大白胸| 国产乱对白刺激视频不卡| 国产情人综合久久777777| 日韩精品久久久免费观看| 久久超碰97人人做人人爱| 久久影院午夜论| 欧美极品视频一区二区三区| 美女网站在线免费欧美精品| 精品国产91亚洲一区二区三区婷婷 | 欧美又粗又大又爽| av不卡在线播放| 一区二区三区日韩欧美| 精品污污网站免费看| 91精品婷婷国产综合久久蝌蚪| 亚洲激情图片一区| 精品视频在线免费观看| 亚洲一卡二卡三卡四卡五卡| 欧美日韩一区国产| yy111111少妇影院日韩夜片| 午夜在线成人av| 精品国产一区二区三区久久久蜜月 | 国产在线播放一区二区| 欧美aaaaa成人免费观看视频| 欧美成人一区二区三区片免费| 免费日韩av电影| 国产一区二区三区在线观看精品| 国产午夜精品一区二区三区视频| 亚洲欧洲国产日韩精品| 成人sese在线| 亚洲妇熟xx妇色黄| 日韩情涩欧美日韩视频| 欧洲亚洲一区二区三区四区五区| 国产精品一二三区| 亚洲欧美色图小说| 91麻豆精品国产无毒不卡在线观看| 精品国产免费久久久久久尖叫| 久久99国产精品久久99 | 亚洲成av人综合在线观看| 日韩精品一区二区三区在线| 日本一区高清在线视频| 成人美女在线观看| 亚洲成人av电影| 国产亚洲综合av| 欧美亚洲国产bt|