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

Docker容器Container鏡像Image如何存儲詳解

 更新時間:2023年09月26日 14:11:37   作者:Mr_csc  
本文主要介紹Docker容器(Container)和鏡像(Image)是如何進(jìn)行數(shù)據(jù)存儲詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

容器如何讀寫文件

鏡像(Image)是由若干個層(Layer)所組成的,當(dāng)用戶使用image運(yùn)行了一個container之后,就會在這個image的最上面再加上一個可讀可寫的layer,如下圖所示:

除了最上面那一個layer是可讀寫的之外,下面的所有l(wèi)ayer都是屬于image的,都是只讀的。

在container運(yùn)行時,任何在container文件系統(tǒng)中寫入和修改的數(shù)據(jù)都會被寫入到最上層的可讀寫layer(這里不包括volume、bind mount和tmpfs這些持久化存儲手段),并不會影響到下面的那些只讀layer。當(dāng)container運(yùn)行結(jié)束的時候,最上層的可讀寫layer就會被丟棄,而下面的那些只讀layer是屬于image的,并不會受到影響。

這也就是為什么使用同一個image運(yùn)行container,該container結(jié)束之后,重新使用該image啟動一個新的container,上一個container寫入和修改的數(shù)據(jù)全都不見了,用戶能看見的依舊是當(dāng)初編寫Dockerfile時寫入該image的那些數(shù)據(jù)的原因。

如果使用同一個image啟動了多個container,那么這些container會有各自的最上層的可讀寫layer,但是下面的那些只讀layer是共用的,如下圖所示:

鏡像的layer管理

一個image的多個layer并不是綁定和存儲在一起的,它們之間是低耦合的。

使用docker pull命令拉取一個image的時候,并不是一次性拉取的,而是一個layer一個layer地拉取,然后存儲在本機(jī)(在linux上默認(rèn)是/var/lib/docker/<storage-driver>/下)。

一臺主機(jī)中存在多個image時,有可能會出現(xiàn)多個image的某些layer相同的情況,那么此時在主機(jī)中就只會存儲一份該layer,而不是存儲多個。

那么問題來了:既然多個layer是分開存儲的,那么用戶在container中卻可以看到所有的layer中存儲的文件,這又是怎么做到的呢?這就涉及到了union file system和union mount。

可以通過docker image history以及docker image inspect來查看某個image的所有l(wèi)ayer。

Copy On Write

當(dāng)container想要更改原本就存在于image中的那些數(shù)據(jù)的時候該怎么辦呢?那些數(shù)據(jù)是位于下面那些屬于image的只讀層的,因此肯定不能直接修改。Docker采用的解決方案一般是copy-on-write。

當(dāng)container想要讀取原本就存在于image中的數(shù)據(jù)時,直接從數(shù)據(jù)所在的只讀layer讀取即可。而如果想要修改原本就存在于image中的數(shù)據(jù)時,Docker就會先把要被修改的文件拷貝到最上層的屬于container的可讀寫layer中,然后再在這個可讀寫的layer中進(jìn)行數(shù)據(jù)的修改即可。

值得一提的是,哪怕是對文件的元數(shù)據(jù)(meta data)的修改(例如修改文件權(quán)限、所屬用戶等等),也會觸發(fā)copy-on-write機(jī)制。

Docker有多種存儲引擎(storage driver),不同的storage driver對copy-on-write的具體實(shí)現(xiàn)是不一樣的。

注意:并不是所有的Docker存儲引擎都支持copy on write的,例如vfs就不支持!

查看容器占用磁盤大小

使用docker ps -s來查看一個container在運(yùn)行時占用的磁盤大小,例如:

SIZE指的是該container最上層的可讀寫layer的大小,而virtual指的是啟動了該container的image的那些只讀layer的大小。
需要注意的是,通過這個命令得到的container磁盤空間大小是不包括以下這些的:

  • log文件所使用的磁盤空間
  • volume和bind mount所使用的磁盤空間
  • container的配置文件所使用的磁盤空間
  • 內(nèi)存交換所使用的磁盤空間
  • Checkpoints所使用的磁盤空間

Docker存儲引擎

Docker在linux下提供了如下的存儲引擎選項(xiàng):

存儲引擎描述
overlay2在linux上首選的存儲引擎,不需要額外的配置
fuse-overlayfs推薦在運(yùn)行rootless的Docker時使用
btrfs和zfs可以提供更多的功能,例如快照等等,但是需要額外的配置
vfs目前仍處于測試中,用于不支持copy on write的文件系統(tǒng)中,性能堪憂,不推薦使用在生產(chǎn)環(huán)境中
devicemapper在生產(chǎn)環(huán)境中需要direct-lvm的支持

可以通過docker info命令來查看自己使用的Docker用的是哪一個storage driver:

上圖中使用的storage driver是overlay2。

參考資料 https://docs.docker.com/storage/storagedriver/

以上就是Docker容器Container鏡像Image如何存儲詳解的詳細(xì)內(nèi)容,更多關(guān)于Docker容器鏡像存儲的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Docker安裝配置鏡像加速器的實(shí)現(xiàn)

    Docker安裝配置鏡像加速器的實(shí)現(xiàn)

    本文主要介紹了Docker安裝配置鏡像加速器的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-01-01
  • docker maven plugin快速部署微服務(wù)的詳細(xì)流程

    docker maven plugin快速部署微服務(wù)的詳細(xì)流程

    本文給大家介紹docker?maven?plugin微服務(wù)快速部署方法,主要將Dockerfile寫在pom中方便項(xiàng)目管理,將微服務(wù)的 打包、上傳、鏡像創(chuàng)建操作整合到一條命令中執(zhí)行,感興趣的朋友跟隨小編一起看看吧
    2022-04-04
  • Docker創(chuàng)建一個mysql容器并保存為本地鏡像

    Docker創(chuàng)建一個mysql容器并保存為本地鏡像

    本篇文章主要介紹了Docker創(chuàng)建一個mysql容器并保存為本地鏡像 ,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • Docker 存儲卷(Volume)核心概念、類型與操作指南(最新整理)

    Docker 存儲卷(Volume)核心概念、類型與操作指南(最新整理)

    Docker 存儲卷 是 Docker 容器中用于持久化存儲數(shù)據(jù)的獨(dú)立文件系統(tǒng)區(qū)域,它獨(dú)立于容器的聯(lián)合文件系統(tǒng),其生命周期可以完全獨(dú)立于創(chuàng)建它的容器,本文給大家介紹Docker 存儲卷(Volume)核心概念、類型與操作指南,感興趣的朋友一起看看吧
    2025-09-09
  • Docker安裝MySQL并使用Navicat連接的操作方法

    Docker安裝MySQL并使用Navicat連接的操作方法

    這篇文章主要介紹了Docker安裝MySQL并使用Navicat連接,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-09-09
  • docker images本地遷移的實(shí)現(xiàn)

    docker images本地遷移的實(shí)現(xiàn)

    這篇文章主要介紹了docker images本地遷移的實(shí)現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • 解決虛擬機(jī)掛起后再恢復(fù)后Docker部署的應(yīng)用無法連接問題

    解決虛擬機(jī)掛起后再恢復(fù)后Docker部署的應(yīng)用無法連接問題

    這篇文章主要介紹了解決虛擬機(jī)掛起后再恢復(fù)后Docker部署的應(yīng)用無法連接問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • Docker搭建持續(xù)集成平臺Jenkins的最簡教程分享

    Docker搭建持續(xù)集成平臺Jenkins的最簡教程分享

    Jenkins 是一個廣泛使用的開源持續(xù)集成工具,它能夠自動化構(gòu)建、測試和部署軟件項(xiàng)目,本文我們將使用 Docker 搭建一個基于 Jenkins 的持續(xù)集成平臺,感興趣的可以了解下
    2024-03-03
  • 詳解基于docker搭建lanproxy內(nèi)網(wǎng)穿透服務(wù)

    詳解基于docker搭建lanproxy內(nèi)網(wǎng)穿透服務(wù)

    這篇文章主要介紹了詳解基于docker搭建lanproxy內(nèi)網(wǎng)穿透服務(wù),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • Docker安裝ClickHouse并初始化數(shù)據(jù)測試

    Docker安裝ClickHouse并初始化數(shù)據(jù)測試

    clickhouse作為現(xiàn)在流行的數(shù)據(jù)分析數(shù)據(jù)庫,非常熱門,docker如何安裝ClickHouse,很多朋友并不是很明白,今天小編抽空給大家分享一篇教程關(guān)于Docker安裝ClickHouse并初始化數(shù)據(jù)測試的問題,一起看看吧
    2021-06-06

最新評論

宁夏| 呼图壁县| 梓潼县| 弥渡县| 光山县| 麻城市| 尼勒克县| 莆田市| 桐梓县| 宝坻区| 饶平县| 都安| 郓城县| 永福县| 红河县| 和静县| 井陉县| 凤山市| 青龙| 商洛市| 清水县| 漾濞| 灵丘县| 旬阳县| 成都市| 开化县| 桐乡市| 忻州市| 精河县| 武胜县| 玉山县| 游戏| 吉首市| 日照市| 北宁市| 泸水县| 惠东县| 辽阳市| 阳朔县| 新宾| 桓台县|