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

Docker中的容器數(shù)據(jù)持久化問題

 更新時(shí)間:2026年03月04日 09:48:09   作者:五星上炕  
本文介紹了Docker容器中數(shù)據(jù)持久化的方法,包括默認(rèn)的可讀寫層、volumes、bindmounts和tmpfs,volumes是官方推薦的持久化方案,而bindmount和tmpfs則適用于不同的場(chǎng)景,在使用mount類型時(shí),需要注意一些細(xì)節(jié),如掛載空volume、bindmount非空目錄等

Docker容器數(shù)據(jù)持久化

參考:https://docs.docker.com/storage/

默認(rèn)情況下,container內(nèi)部新創(chuàng)建文件或者修改文件,結(jié)果會(huì)保存在container的可讀寫層中,這意味著:

  • 當(dāng)container消失時(shí),與container一體的可讀寫層也一并消失,數(shù)據(jù)并沒有持久化。并且,當(dāng)一個(gè)container需要其它c(diǎn)ontainer中可讀寫層的數(shù)據(jù)時(shí),取出操作非常困難。
  • container的可讀寫層與宿主機(jī)的文件系統(tǒng)緊密結(jié)合,很難將它從一臺(tái)宿主機(jī)遷移到其它宿主機(jī)。
  • container的可讀寫層,低下需要一個(gè)實(shí)現(xiàn)聯(lián)合文件系統(tǒng)的storage driver,與直接在宿主機(jī)文件系統(tǒng)中讀寫數(shù)據(jù)相比效率要低。

如果打算將數(shù)據(jù)持久化在宿主機(jī)的文件系統(tǒng)中,docker提供至少兩個(gè)選項(xiàng):volumes與bind mounts,如果docker運(yùn)行在Linux操作系統(tǒng)中,還可以使用tmpfs .mount。

選擇正確的mount類型

無論你選擇那種mount類型,從container內(nèi)部看沒有區(qū)別,它們都是目錄或者文件。數(shù)據(jù)都是寄存在宿主機(jī)上,只不過具體位置有所區(qū)別,如下:

  • bind mount:將宿主機(jī)中的文件、目錄mount到容器上。其上的數(shù)據(jù)可以被宿主機(jī)讀寫,可以被mount它的所有容器讀寫。
  • volume:volume由docker管理,比如創(chuàng)建、刪除什么的。默認(rèn)情況下,volume的存儲(chǔ)空間來自于宿主機(jī)文件系統(tǒng)中的某個(gè)目錄,如/var/lib/docker/volumes/,docker系統(tǒng)這外的程序不應(yīng)該修改其中的數(shù)據(jù)。volume是官方推薦的持久化方案。
  • tmpfs mount:tmpfs類型文件與普通文件的區(qū)別是只存在于宿主機(jī)內(nèi)存中,不會(huì)持久化。

有關(guān)掛載類型的更多詳細(xì)信息

volumes:由docker負(fù)責(zé)創(chuàng)建、管理。用戶可以顯式的調(diào)用命令docker volume create創(chuàng)建volume,也可以通過container、service的啟動(dòng)隱式創(chuàng)建。

  • 默認(rèn)情況下創(chuàng)建的volume本質(zhì)上還是宿主機(jī)文件系統(tǒng)中的一個(gè)目錄,與普通目錄無本質(zhì)區(qū)別。一個(gè)volume可以同時(shí)供多個(gè)container使用,如果沒有container使用volume,它不會(huì)自動(dòng)刪除,用戶需運(yùn)行docker volume prune明確刪除它。
  • 如果用戶顯式創(chuàng)建volume則需要給它指定一個(gè)名稱,如果是隱式創(chuàng)建volume則docker會(huì)自動(dòng)為它分配一個(gè)在宿主機(jī)范圍內(nèi)唯一的名字。
  • 通過使用第三方提供的volume driver,用戶可以將數(shù)據(jù)持久到遠(yuǎn)程主機(jī)或者云存儲(chǔ)中,也就是說存儲(chǔ)空間可以不由宿主機(jī)提供。

bind mount:本質(zhì)上是宿主機(jī)、container之間共享宿主機(jī)文件系統(tǒng)。這種持久化方法更導(dǎo)致container與宿主機(jī)的耦合過于緊密,所以不推薦使用。

tmpfs mount:有特定的應(yīng)用場(chǎng)景。比如docker可將用戶名與密碼等敏感數(shù)據(jù)保存在某個(gè)數(shù)據(jù)庫中,當(dāng)啟動(dòng)需要訪問這些敏感數(shù)據(jù)的container或者service時(shí),docker會(huì)在宿主機(jī)上創(chuàng)建一個(gè)tmpfs,然后將敏感數(shù)據(jù)從數(shù)據(jù)庫讀出寫到tmpfs中,再將tmpfs mount到container中,安樣能保證數(shù)據(jù)安全。當(dāng)容器停止運(yùn)行時(shí),則相應(yīng)的tmpfs也從系統(tǒng)中刪除。

在創(chuàng)建容器時(shí),bind mount與volume兩種方式使用的選項(xiàng)相同,都是-v或者--volume,而實(shí)際上在語法上有明顯的區(qū)別。tmpfs通過--tmpfs選項(xiàng)實(shí)現(xiàn)??傊谂f版本的docker中,這一塊的語法有點(diǎn)混亂,從docker17.0.6開始,推薦使用新選項(xiàng)--mount,它要清晰的多。

volume適用場(chǎng)景

  • 多個(gè)容器這間共享數(shù)據(jù)
  • 宿主機(jī)不保證存在固定的目錄結(jié)構(gòu)
  • 持久化數(shù)據(jù)到遠(yuǎn)程主機(jī)或者云存儲(chǔ)而非本地
  • 需要備份、遷移、合并數(shù)據(jù)時(shí)。停止container,將volume整體復(fù)制,用于備份、遷移、合并等。

bind mount適用場(chǎng)景

  • container共享宿主機(jī)配置文件。比如docker會(huì)將宿主機(jī)文件/etc/resov.conf文件bind mount到容器上,兩者會(huì)使用相同的DNS服務(wù)器。
  • 開發(fā)環(huán)境中宿主機(jī)與container之間共享源代碼、構(gòu)建構(gòu)件等。比如將整個(gè)build過程container化,將宿主機(jī)上的源代碼文件夾bind mount到build container中。修改代碼后,運(yùn)行build container的build命令,build container則將build結(jié)構(gòu)寫入另一個(gè)bind mount的文件夾中。
  • 一些監(jiān)控類container,通過讀取宿主機(jī)固定文件中的數(shù)據(jù)實(shí)現(xiàn)監(jiān)控等。

使用bind mount與volume的提示

  • 如果將空volume掛載到container上的某個(gè)目錄,此目錄下原來的文件與子目錄會(huì)復(fù)制到空volume中。
  • 如果bind mount一個(gè)非空目錄或者文件,或者非空volume,則container目錄中的原始內(nèi)容將被遮蔽,當(dāng)解決掛載時(shí)則自動(dòng)恢復(fù)。

總結(jié)

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

相關(guān)文章

  • Docker daemon 無法啟動(dòng): does not match with stored UUID錯(cuò)誤解決辦法

    Docker daemon 無法啟動(dòng): does not match with stored UUID錯(cuò)誤解決辦法

    這篇文章主要介紹了Docker daemon 無法啟動(dòng): does not match with stored UUID錯(cuò)誤解決辦法的相關(guān)資料,需要的朋友可以參考下
    2016-11-11
  • 詳解Docker 容器跨主機(jī)多網(wǎng)段通信解決方案

    詳解Docker 容器跨主機(jī)多網(wǎng)段通信解決方案

    這篇文章主要介紹了Docker 容器跨主機(jī)多網(wǎng)段通信解決方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • docker啟動(dòng)容器服務(wù)后訪問失敗的解決方案

    docker啟動(dòng)容器服務(wù)后訪問失敗的解決方案

    初學(xué)Docker容器的基本操作,拉取了tomcat鏡像,輸入運(yùn)行容器命令運(yùn)行容器一系列操作都沒有問題,但是在瀏覽器訪問端口時(shí)卻訪問不到,下面這篇文章主要給大家介紹了關(guān)于docker啟動(dòng)容器服務(wù)后訪問失敗的解決方案,需要的朋友可以參考下
    2023-05-05
  • 云原生使用Docker部署mysql數(shù)據(jù)庫的詳細(xì)過程

    云原生使用Docker部署mysql數(shù)據(jù)庫的詳細(xì)過程

    使用docker部署mysql,可以省去mysql的安裝配置過程,而且不限制數(shù)量,即起即用,下面這篇文章主要給大家介紹了關(guān)于云原生使用Docker部署mysql數(shù)據(jù)庫的詳細(xì)過程,需要的朋友可以參考下
    2023-03-03
  • docker可視化圖形工具portainer詳解

    docker可視化圖形工具portainer詳解

    Portainer 是一個(gè)可視化容器鏡像的圖形管理工具,利用 Portainer 可以輕松構(gòu)建,管理和維護(hù) Docker 環(huán)境,接下來通過本文給大家介紹docker可視化圖形工具portainer知識(shí),感興趣的朋友一起看看吧
    2021-11-11
  • Linux/Docker 中使用 System.Drawing.Common 踩坑記錄分享

    Linux/Docker 中使用 System.Drawing.Common 踩坑記錄分享

    這篇文章主要介紹了Linux/Docker 中使用 System.Drawing.Common 踩坑記錄,本文通過兩種方案給大家詳細(xì)介紹,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Docker配置國內(nèi)加速器加速鏡像下載的方法

    Docker配置國內(nèi)加速器加速鏡像下載的方法

    本篇文章主要介紹了Docker配置國內(nèi)加速器加速鏡像下載的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • docker中的load和save鏡像重命名介紹

    docker中的load和save鏡像重命名介紹

    使用docker save保存鏡像時(shí)若僅用IMAGEID,加載后鏡像名會(huì)顯示為<none>,因未包含REPOSITORY和TAG信息,解決方法:加載后用docker tag命令手動(dòng)指定新名稱和標(biāo)簽
    2025-09-09
  • Docker容器名稱沖突錯(cuò)誤的原因分析和有效解決方案

    Docker容器名稱沖突錯(cuò)誤的原因分析和有效解決方案

    這篇文章主要介紹了Docker容器名稱沖突的問題,分析了錯(cuò)誤發(fā)生的原因,并提供了幾種解決方案:刪除現(xiàn)有容器、重命名容器、使用不同名稱創(chuàng)建新容器,以及更新現(xiàn)有容器的重啟策略,文章還推薦了預(yù)防措施,需要的朋友可以參考下
    2025-10-10
  • Docker安裝寶塔面板的實(shí)現(xiàn)

    Docker安裝寶塔面板的實(shí)現(xiàn)

    本文主要介紹了Docker安裝寶塔面板的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-08-08

最新評(píng)論

东乡族自治县| 满洲里市| 团风县| 龙门县| 东海县| 东兰县| 新绛县| 四子王旗| 奉贤区| 永和县| 揭阳市| 华容县| 平塘县| 宜君县| 沧州市| 石林| 新宾| 普陀区| 黄梅县| 虞城县| 桃江县| 武夷山市| 亳州市| 泉州市| 彰武县| 星座| 茶陵县| 宝山区| 宜兰市| 北海市| 泽州县| 禄丰县| 武陟县| 黄龙县| 虎林市| 城口县| 奉贤区| 西峡县| 安龙县| 兴海县| 上栗县|