最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Docker的底層原理及分析

 更新時(shí)間:2025年09月28日 09:18:36   作者:三傻317  
Docker通過(guò)命名空間實(shí)現(xiàn)進(jìn)程、網(wǎng)絡(luò)等隔離,利用Cgroups控制資源,聯(lián)合文件系統(tǒng)分層存儲(chǔ)并支持?jǐn)?shù)據(jù)持久化,數(shù)據(jù)卷技術(shù)確保容器數(shù)據(jù)不受生命周期影響

Docker底層原理

docker實(shí)際上類(lèi)似于一種“進(jìn)程隔離技術(shù)”,利用Linux系統(tǒng)的一些特性功能,將不同容器隔離開(kāi)來(lái),使其不受外界的影響。

docker使用的Linux特性功能主要有:

1、命名空間(Namespace):把不同容器的進(jìn)程、網(wǎng)絡(luò)、文件系統(tǒng)隔離開(kāi)來(lái)

2、控制組(Cgroups):限制容器使用CPU、內(nèi)存等資源

3、聯(lián)合文件系統(tǒng)(UnionFS):支持鏡像的分層構(gòu)建

一、命名空間

命名空間可以將全局資源分為若干塊,命名空間內(nèi)部的進(jìn)程無(wú)法看到其他命名空間的進(jìn)程,利用這一特點(diǎn),就可以做到容器的隔離。

命名空間有很多類(lèi)型,docker主要使用的如下:

  • 1、PID命名空間:該命名空間的第一個(gè)進(jìn)程的PID為1,其他的進(jìn)程都掛在這個(gè)第一個(gè)進(jìn)程下面,這樣容器內(nèi)部就無(wú)法看到宿主機(jī)進(jìn)程
  • 2、NET命名空間:控制網(wǎng)絡(luò)資源,每個(gè)容器都可以有獨(dú)立的IP、路由表、端口號(hào),然后由宿主機(jī)通過(guò)虛擬網(wǎng)卡把容器網(wǎng)絡(luò)連到外面。值得注意的是,docker本身并沒(méi)有硬件或者模擬硬件,docker與宿主機(jī)共用一個(gè)內(nèi)核(特別地,docker容器中的網(wǎng)絡(luò)協(xié)議棧是獨(dú)立的,但是最終走宿主機(jī)的內(nèi)核TCP/IP協(xié)議棧,網(wǎng)絡(luò)并非完全共用)
  • 3、IPC命名空間:控制進(jìn)程間通信,如信號(hào)量等,以防與宿主機(jī)的IPC沖突
  • 4、UTS命名空間:控制主機(jī)名和域名,使每個(gè)容器都有自己的hostname
  • 5、MNT命名空間:控制系統(tǒng)掛載點(diǎn),容器內(nèi)部能看到的根目錄/實(shí)際上是宿主機(jī)的某個(gè)子目錄
  • 6、USER命名空間:控制用戶(hù)和權(quán)限,容器內(nèi)的root用戶(hù)可以映射為宿主機(jī)的普通用戶(hù)

二、控制組

為了防止被隔離的容器吃光宿主機(jī)的資源,docker還利用了Linux提供的Cgroups來(lái)進(jìn)行資源控制,如CPU,內(nèi)存,磁盤(pán)I/O,網(wǎng)絡(luò)等資源。

Cgroups實(shí)際上是一顆資源管理的層級(jí)樹(shù),每個(gè)Cgroup節(jié)點(diǎn)都能設(shè)置資源限制,進(jìn)程加入某個(gè)Cgroup,就必須遵守對(duì)應(yīng)的限制。

三、聯(lián)合文件系統(tǒng)

UnionFSUnion File System,聯(lián)合文件系統(tǒng))是一種分層的文件系統(tǒng)。

它的特點(diǎn)是:

  • 1、可以把多個(gè)目錄(層)“聯(lián)合”掛載在一起,對(duì)外呈現(xiàn)成一個(gè)目錄。
  • 2、上層可以覆蓋下層的文件(像透明膠片疊加)。
  • 3、支持寫(xiě)時(shí)復(fù)制(Copy-On-WriteCOW)。

為了保證docker拉取后鏡像干凈不被修改,鏡像被拉取下來(lái)都是只讀的層,運(yùn)行容器時(shí),會(huì)在鏡像的最上層加上一層可寫(xiě)層,由于上層可以覆蓋下層的特性,修改上層文件就能達(dá)到修改容器運(yùn)行邏輯的目的,同時(shí),保證了這個(gè)鏡像內(nèi)部不被修改;容器刪除后,可寫(xiě)層會(huì)消失,鏡像層保持不變 。

當(dāng)需要修改可寫(xiě)層時(shí),將需要修改的對(duì)應(yīng)數(shù)據(jù)找到并復(fù)制到可寫(xiě)層,再進(jìn)行修改,這就是寫(xiě)時(shí)復(fù)制。

四、數(shù)據(jù)卷掛載

通過(guò)學(xué)習(xí)聯(lián)合文件系統(tǒng)我們知道,容器內(nèi)部的文件系統(tǒng)是獨(dú)立的,也是一次性的,每次容器重啟后,原有的數(shù)據(jù)就會(huì)消失,對(duì)于需要數(shù)據(jù)持久化的程序,就需要使用數(shù)據(jù)卷技術(shù)。

數(shù)據(jù)卷實(shí)際上是容器與宿主機(jī)之間共享的一塊目錄/文件,它不受容器的生命周期影響,因此可以被用來(lái)持久化數(shù)據(jù)

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • docker+daocloud實(shí)現(xiàn)前端項(xiàng)目自動(dòng)構(gòu)建部署

    docker+daocloud實(shí)現(xiàn)前端項(xiàng)目自動(dòng)構(gòu)建部署

    這篇文章主要介紹了docker+daocloud實(shí)現(xiàn)前端項(xiàng)目自動(dòng)構(gòu)建部署,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • docker安裝rocketMq5x以上的版本

    docker安裝rocketMq5x以上的版本

    本文主要介紹了docker安裝rocketMq5x以上的版本,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2026-01-01
  • Docker搭建Portainer可視化界面步驟詳解

    Docker搭建Portainer可視化界面步驟詳解

    在本篇文章里小編給大家分享的是一篇關(guān)于Docker搭建Portainer可視化界面的實(shí)例操作方法,需要的朋友們參考下。
    2019-10-10
  • Dockerfile的CMD指令用法

    Dockerfile的CMD指令用法

    這篇文章主要介紹了Dockerfile的CMD指令用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • docker啟動(dòng)mysql5.7服務(wù)詳細(xì)說(shuō)明

    docker啟動(dòng)mysql5.7服務(wù)詳細(xì)說(shuō)明

    這篇文章主要給大家介紹了關(guān)于docker啟動(dòng)mysql5.7服務(wù)的相關(guān)資料,文中通過(guò)代碼示例介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考價(jià)值,需要的朋友可以參考下
    2023-09-09
  • docker打包Python環(huán)境的過(guò)程詳解

    docker打包Python環(huán)境的過(guò)程詳解

    這篇文章主要介紹了docker打包Python環(huán)境過(guò)程,準(zhǔn)備工作需要大家復(fù)制python程序啟動(dòng)程序,具體操作流程跟隨小編一起看看吧
    2021-08-08
  • 不重啟Docker容器就能修改時(shí)間的全方案總結(jié)

    不重啟Docker容器就能修改時(shí)間的全方案總結(jié)

    在使用Docker的過(guò)程中,很多開(kāi)發(fā)者會(huì)遇到需要修改容器時(shí)間的場(chǎng)景,本文會(huì)梳理Docker容器時(shí)間的底層邏輯,以及不重啟容器修改時(shí)間的所有可行方案,大家可以根據(jù)需要進(jìn)行選擇
    2025-12-12
  • docker-compose的build使用方式

    docker-compose的build使用方式

    這篇文章主要介紹了docker-compose的build使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Ubuntu安裝Docker及配置鏡像加速與常見(jiàn)命令超詳細(xì)教程

    Ubuntu安裝Docker及配置鏡像加速與常見(jiàn)命令超詳細(xì)教程

    Docker是一種流行的容器化平臺(tái),它能夠簡(jiǎn)化應(yīng)用程序的部署和管理,這篇文章主要介紹了Ubuntu安裝Docker及配置鏡像加速與常見(jiàn)命令的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-12-12
  • 基于Maven+Docker的WebApp打包與部署全過(guò)程

    基于Maven+Docker的WebApp打包與部署全過(guò)程

    這篇文章主要介紹了基于Maven+Docker的WebApp打包與部署的相關(guān)資料,文中通過(guò)代碼講解了如何找到正確的JAR包、覆蓋Docker使用的JAR、構(gòu)建Docker鏡像、解決Docker構(gòu)建失敗的問(wèn)題以及在服務(wù)器上部署,需要的朋友可以參考下
    2026-02-02

最新評(píng)論

伊川县| 福鼎市| 甘谷县| 长寿区| 天全县| 乳山市| 万盛区| 通山县| 苏州市| 兴安盟| 象州县| 承德县| 响水县| 开阳县| 鸡东县| 富蕴县| 富川| 霍州市| 汶上县| 新绛县| 上高县| 肥城市| 石城县| 内乡县| 桑植县| 永川市| 石河子市| 金寨县| 左权县| 乐东| 延长县| 乌什县| 铜川市| 鹤庆县| 思南县| 江孜县| 山东| 望谟县| 冷水江市| 新干县| 哈密市|