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

Docker的底層原理及分析

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

Docker底層原理

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

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

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

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

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

一、命名空間

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

命名空間有很多類型,docker主要使用的如下:

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

二、控制組

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

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

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

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

它的特點(diǎn)是:

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

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

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

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

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

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

總結(jié)

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

相關(guān)文章

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

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

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

    docker安裝rocketMq5x以上的版本

    本文主要介紹了docker安裝rocketMq5x以上的版本,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(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à)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • docker啟動mysql5.7服務(wù)詳細(xì)說明

    docker啟動mysql5.7服務(wù)詳細(xì)說明

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

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

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

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

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

    docker-compose的build使用方式

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

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

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

    基于Maven+Docker的WebApp打包與部署全過程

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

最新評論

增城市| 南昌市| 兴安县| 托克托县| 宁夏| 台安县| 怀安县| 民权县| 米泉市| 桦甸市| 咸宁市| 灵武市| 衡水市| 海安县| 漳浦县| 新野县| 上饶县| 阳东县| 丰宁| 甘泉县| 和硕县| 扬中市| 垣曲县| 六安市| 霸州市| 西宁市| 旬阳县| 阳朔县| 彩票| 阳信县| 河南省| 丰原市| 新宾| 长垣县| 河曲县| 阆中市| 晋城| 延长县| 涞源县| 芒康县| 霍邱县|