Docker容器的持久儲存模式

2021-09-23 01:29:05 字數 1376 閱讀 8589

本文講的是docker容器的持久儲存模式

【編者的話】本文討論了docker容器的持久儲存模式,包括預設模式、資料卷模式、只含資料的容器、從主機對映而得的資料卷、從主機對映而得的資料卷且儲存後端是共享儲存以及 convoy 儲存外掛程式,其中第 2-4 種支援容器永續性,即公升級容器也不會移除資料;第 5-6 種支援主機永續性,即主機失效也不會引起資料丟失。

說到docker,持久儲存是乙個需要小心處理的問題。通常乙個服務的公升級流程是關停舊版本容器,然後拉取並啟動新版本容器。預設情況下,舊版容器包含的所有資料都會被消除,我們當然不想這樣。

本文將討論保證資料永續性的幾種模式:

上述幾種永續性(我自己發明的)是什麼意思呢?

下面一一解釋這些持久儲存模式。

這是最基本的一種持久儲存模式。建立容器時沒有指定任何與卷相關的選項,資料儲存在容器內部。前文已經提及,公升級容器會導致容器資料丟失。如果容器是無狀態的,這當然沒問題;如果容器是有狀態的,需要持久儲存資料(例如,資料庫容器),預設模式顯然就不適合了。

在建立容器時指定 

volume

選項。資料卷位於主機系統的特定位置下(例如, /var/lib/docker/volumes/_container_name_/_data 目錄下,可用docker inspect命令檢視),公升級容器時不會改動這些資料。

只包含資料的容器

與典型的資料卷相比略有不同。首先建立乙個資料卷容器(通常以 busybox 或 alpine 為基礎映象),然後在啟動主容器時使用-volumes-from選項,把資料卷容器的所有卷對映到主容器內。這是一種典型的

隨從模式實現。

這種模式是把主機的目錄對映為容器的資料卷。在資料卷模式中,容器的資料夾實際上儲存在主機 /var/lib/docker/volumes/ 目錄下面的乙個檔案。而

從主機對映的卷

是直接建立容器與主機之間的目錄對映。這種方式與資料卷模式具有相同的優點,也可以混合使用這兩種模式。這種模式的主要缺點是容器與主機之間的許可權(uid/gid)對映。

把共享儲存(例如, nfs, gluster ...)的資料夾對映為主機的資料夾,再對映為容器的卷。這種模式的主要優點是:即使主機失效,容器的資料也不會丟失。

主機級別的持久儲存對映感覺還是有些「靜態」——你必須保證所有主機預設具有相同的資料夾結構,否則終有一天會遇上麻煩。

convoy

是 docker 的乙個儲存卷外掛程式,起乙個中介容器的作用:確保容器的資料卷鏈結到共享儲存,目前實現了 nfs 和 gluster 兩種共享儲存的支援,其他共享儲存的支援據說「即將」實現。

我知道 

flocker

,雖然沒試用過,看起來挺不錯的。

原文發布時間為: 2016-05-09 

docker 儲存持久化

docker容器不適合存放資料,重要的資料要用外部卷儲存,容器可以掛載真實機目錄或者共享儲存為卷 儲存卷對映 docker run itd v 真實機目錄 容器目錄 映象 標籤可以做一台nfs伺服器host01共享 var webroot目錄 docker01伺服器把host01的共享目錄掛載到 m...

Docker 持久化儲存

參考 命令 volume 1 檢視所有的掛載 docker volume ls 檢視具體掛載資訊 docker volume inspect 掛載名 自行建立volume docker volume create 自定義掛載名 掛載方式 1.先通過volume建立掛載點,後在run的時候掛載指定資訊...

自己學Docker 8 容器的持久化

今天繼續看docker相關的東西.之前,去了解資料卷和資料卷容器是因為在剛開始了解docker的工作模式時遇到了兩個疑問 關於docker資料持久化的,和docker如何共享資料.通過對於資料卷和資料卷容器的了解,目前從整體上可以知道docker如何共享資料和持久化資料.在不斷學習的過程中,了解到d...