docker數(shù)據(jù)管理

容器中的管理數(shù)據(jù)主要有兩種方式:

數(shù)據(jù)卷(Data Volumes):容器內(nèi)數(shù)據(jù)直接映射到本地主機(jī)環(huán)境馒胆;如何在容器內(nèi)創(chuàng)建數(shù)據(jù)卷规脸,并且把本地的目錄或文件掛載到容器內(nèi)的數(shù)據(jù)卷中扳还。

數(shù)據(jù)卷容器(Data Volume Containers):使用特定容器維護(hù)數(shù)據(jù)卷。如何使用數(shù)據(jù)卷容器在容器和主機(jī)、容器和容器之間共享數(shù)據(jù)悬蔽,并實現(xiàn)數(shù)據(jù)的備份和恢復(fù)。


數(shù)據(jù)卷存在于宿主機(jī)中捉兴,獨(dú)立于容器蝎困,和容器的生命周期是分離的,數(shù)據(jù)卷存在于宿主機(jī)的文件系統(tǒng)中倍啥,數(shù)據(jù)卷可以目錄也可以是文件禾乘,容器可以利用數(shù)據(jù)卷與宿主機(jī)進(jìn)行數(shù)據(jù)共享,實現(xiàn)了容器間的數(shù)據(jù)共享和交換虽缕。



數(shù)據(jù)卷可以提供很多有用的特性始藕,類似于Linux 中的mount 行:

數(shù)據(jù)卷可以在容器之間共事和重用,容器間傳遞數(shù)據(jù)將變得高效與方便氮趋;

對數(shù)據(jù)卷內(nèi)數(shù)據(jù)的修改會立馬生效伍派,無論是容器內(nèi)操作還是本地操作;

對數(shù)據(jù)卷的更新不會影響鏡像剩胁,解摘開應(yīng)用和數(shù)據(jù)诉植;

卷會一直存在,直到?jīng)]有容器使用昵观,可以安全地卸載它晾腔。


1. 創(chuàng)建數(shù)據(jù)卷

$ docker volume create -d local test

test

此時,查看/var/lib/docker/volumes 路徑下(宿主機(jī)路徑)啊犬,會發(fā)現(xiàn)所創(chuàng)建的數(shù)據(jù)卷位置:

$ ls -1 /var/lib/docker/volumes

drwxr- xr-x 3 root root 4096 May 22 06:02 test

除了create 子命令外灼擂, docker volume 還支持inspect (查看詳細(xì)信息)、ls (列

出已有數(shù)據(jù)卷)觉至、prune (清理無用數(shù)據(jù)卷)剔应、rm (刪除數(shù)據(jù)卷)等,讀者可以自行實踐。


2 綁定數(shù)據(jù)卷

除了使用volume子命令來管理數(shù)據(jù)卷外峻贮,還可以在創(chuàng)建容器時將主機(jī)本地的任意路徑

掛載到容器內(nèi)作為數(shù)據(jù)卷席怪,這種形式創(chuàng)建的數(shù)據(jù)卷稱為綁定數(shù)據(jù)卷。

在用docker [container] run命令的時候月洛,可以使用 -mount 選項來使用數(shù)據(jù)卷何恶。

-mount 選項支持三種類型的數(shù)據(jù)卷孽锥,包括:

volume : 普通數(shù)據(jù)卷嚼黔,映射到主機(jī)/var/lib/docker/volumes 路徑下;

bind :綁定數(shù)據(jù)卷惜辑,映射到主機(jī)指定路徑下唬涧;

tmpfs :臨時數(shù)據(jù)卷,只存在于內(nèi)存中盛撑。

下面使用training/webapp 鏡像創(chuàng)建一個Web 容器碎节,并創(chuàng)建一個數(shù)據(jù)卷掛載到容器的/opt/webapp 目錄:

$ docker run d P -name web --mount type=bind,source=/webapp,destination=/opt/

webapp training/webapp python app.py

上述命令等同于使用舊的 -v 標(biāo)記可以在容器內(nèi)創(chuàng)建一個數(shù)據(jù)卷:

$ docker run - d - P --name web -v /webapp:/opt/webapp training/webapp python app.py

這個功能在進(jìn)行應(yīng)用測試的時候十分方便,比如用戶可以放置一些程序或數(shù)據(jù)到本地目錄中實時進(jìn)行更新抵卫,然后在容器內(nèi)運(yùn)行和使用狮荔。另外,本地目錄的路徑必須是絕對路徑介粘,容器內(nèi)路徑可以為相對路徑殖氏。如果目錄不存

在,Docker 會自動創(chuàng)建姻采。

Docker 掛載數(shù)據(jù)卷的默認(rèn)權(quán)限是讀寫( rw ) 雅采,用戶也可以通過ro 指定為只讀:

$ docker run ?-d -P --name web -v /webapp: /opt/webapp:rotraining/webapp python app.py

容器內(nèi)的目錄會被覆蓋,如果之前不是空目錄慨亲,將會丟失容器內(nèi)數(shù)據(jù)婚瓜。



3.數(shù)據(jù)卷容器

首先,創(chuàng)建一個數(shù)據(jù)卷容器dbdata 刑棵, 并在其中創(chuàng)建一個數(shù)據(jù)卷掛載到/dbdata :

$ docker run it -v /dbdata --name dbdata ubuntu

root@3ed94f279b6f:/#

查看/dbdata 目錄:

root@3 ed94f279b6f:/# ls

b工n bootdbdatadev etc home lib lib64 media mnt opt proc root run

sbin srv sys tmp usr var

然后巴刻,可以在其他容器中使用-- volumes-from 來掛載dbdata 容器中的數(shù)據(jù)卷,例

如創(chuàng)建dbl 和db2 兩個容器蛉签,并從dbdata 容器掛載數(shù)據(jù)卷:

$ docker run -it --volumes-from dbdata --name dbl ubuntu

$ docker run -it --volumes-from dbdata --name db2 ubuntu

此時冈涧, 容器dbl 和db2 都掛載同一個數(shù)據(jù)卷到相同的 /dbdata 目錄,三個容器任何一方在該目錄下的寫人正蛙,其他容器都可以看到督弓。

如果刪除了掛載的容器(包括dbdata 、db 工和db2 )乒验,數(shù)據(jù)卷并不會被自動刪除愚隧。如果要刪除一個數(shù)據(jù)卷,必須在刪除最后一個還掛載著它的容器時顯式使用docker rm -v 命令來指定同時刪除關(guān)聯(lián)的容器。


4.利用數(shù)據(jù)卷容器來遷移數(shù)據(jù)

可以利用數(shù)據(jù)卷容器對其中的數(shù)據(jù)卷進(jìn)行備份狂塘、恢復(fù)录煤,以實現(xiàn)數(shù)據(jù)的遷移。

備份

使用下面的命令來備份dbdata 數(shù)據(jù)卷容器內(nèi)的數(shù)據(jù)卷:

$ docker run --volumes-from dbdata -v $ (pwd):/backup --name worker ubuntu tar

cvf /backup/backup.tar /dbdata

這個命令稍微有點(diǎn)復(fù)雜荞胡,具體分析下妈踊。

首先利用ubuntu 鏡像創(chuàng)建了一個容器worker 。使用--volumes-from dbdata 參數(shù)來讓worker 容器掛載dbdata 容器的數(shù)據(jù)卷( 即dbdata 數(shù)據(jù)卷)泪漂;使用 -v $ (pwd):/backup參數(shù)來掛載本地的當(dāng)前目錄到worker 容器的/backup 目錄廊营。worker 容器啟動后,使用tar cvf /backup/backup.tar /dbdata 命令將/dbdata下內(nèi)容備份為容器內(nèi)的/backup/backup.tar 萝勤,即宿主主機(jī)當(dāng)前目錄下的backup.tar 露筒。

要備份的數(shù)據(jù)容器的數(shù)據(jù),是備份在一個容器上敌卓,這個容器是掛載了要備份數(shù)據(jù)的容器慎式。

恢復(fù)

如果要恢復(fù)數(shù)據(jù)到一個容器,可以按照下面的操作趟径。

首先創(chuàng)建一個帶有數(shù)據(jù)卷的容器dbdata2:

$ docker run -v /dbdata --name dbdata2 ubuntu /bin/bash

然后創(chuàng)建另一個新的容器瘪吏,掛載dbda ta2 的容器,并使用untar 解壓備份文件到所掛

載的容器卷中:

$docker run --volumes-from dbdata2 -v $(pwd):/backup busybox tar xvf /backup/backu.tar


可以確認(rèn)蜗巧,容器 Volume 里的信息掌眠,并不會被 docker commit 提交掉;但這個掛載點(diǎn)目錄 /test 本身惧蛹,則會出現(xiàn)在新的鏡像當(dāng)中扇救。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市香嗓,隨后出現(xiàn)的幾起案子迅腔,更是在濱河造成了極大的恐慌,老刑警劉巖靠娱,帶你破解...
    沈念sama閱讀 219,539評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件沧烈,死亡現(xiàn)場離奇詭異,居然都是意外死亡像云,警方通過查閱死者的電腦和手機(jī)锌雀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評論 3 396
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來迅诬,“玉大人腋逆,你說我怎么就攤上這事〕薮” “怎么了惩歉?”我有些...
    開封第一講書人閱讀 165,871評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我撑蚌,道長上遥,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,963評論 1 295
  • 正文 為了忘掉前任争涌,我火速辦了婚禮粉楚,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘亮垫。我一直安慰自己模软,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評論 6 393
  • 文/花漫 我一把揭開白布包警。 她就那樣靜靜地躺著撵摆,像睡著了一般底靠。 火紅的嫁衣襯著肌膚如雪害晦。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,763評論 1 307
  • 那天暑中,我揣著相機(jī)與錄音壹瘟,去河邊找鬼。 笑死鳄逾,一個胖子當(dāng)著我的面吹牛稻轨,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播雕凹,決...
    沈念sama閱讀 40,468評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼殴俱,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了枚抵?” 一聲冷哼從身側(cè)響起线欲,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎汽摹,沒想到半個月后李丰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,850評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡逼泣,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評論 3 338
  • 正文 我和宋清朗相戀三年趴泌,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拉庶。...
    茶點(diǎn)故事閱讀 40,144評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡嗜憔,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出氏仗,到底是詐尸還是另有隱情吉捶,我是刑警寧澤,帶...
    沈念sama閱讀 35,823評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站帚稠,受9級特大地震影響谣旁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜滋早,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評論 3 331
  • 文/蒙蒙 一榄审、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧杆麸,春花似錦搁进、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至揭斧,卻和暖如春莱革,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背讹开。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評論 1 272
  • 我被黑心中介騙來泰國打工盅视, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人旦万。 一個月前我還...
    沈念sama閱讀 48,415評論 3 373
  • 正文 我出身青樓闹击,卻偏偏與公主長得像,于是被迫代替她去往敵國和親成艘。 傳聞我的和親對象是個殘疾皇子赏半,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評論 2 355

推薦閱讀更多精彩內(nèi)容