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

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

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

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

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

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

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

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

選擇正確的mount類型

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

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

有關掛載類型的更多詳細信息

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

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

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

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

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

volume適用場景

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

bind mount適用場景

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

使用bind mount與volume的提示

  • 如果將空volume掛載到container上的某個目錄,此目錄下原來的文件與子目錄會復制到空volume中。
  • 如果bind mount一個非空目錄或者文件,或者非空volume,則container目錄中的原始內容將被遮蔽,當解決掛載時則自動恢復。

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Docker daemon 無法啟動: does not match with stored UUID錯誤解決辦法

    Docker daemon 無法啟動: does not match with stored UUID錯誤解決辦法

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

    詳解Docker 容器跨主機多網段通信解決方案

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

    docker啟動容器服務后訪問失敗的解決方案

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

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

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

    docker可視化圖形工具portainer詳解

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

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

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

    Docker配置國內加速器加速鏡像下載的方法

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

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

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

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

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

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

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

最新評論

九江县| 兰考县| 华阴市| 绍兴县| 休宁县| 成武县| 永定县| 万年县| 定安县| 师宗县| 乌拉特后旗| 包头市| 武功县| 连平县| 嫩江县| 深州市| 潼南县| 寿宁县| 潼南县| 行唐县| 浦县| 广汉市| 延津县| 岢岚县| 金沙县| 突泉县| 西昌市| 屏东县| 公安县| 武胜县| 西畴县| 和静县| 长阳| 讷河市| 无锡市| 余江县| 永新县| 廊坊市| 临海市| 鞍山市| 肇源县|