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

用戶(hù)在使用docker的過(guò)程中蓬痒,往往需要能查看容器內(nèi)應(yīng)用產(chǎn)生的數(shù)據(jù),或者需要把容器內(nèi)的數(shù)據(jù)進(jìn)行備份,甚至多個(gè)容器之間進(jìn)行數(shù)據(jù)的共享垄潮,這必然涉及容器的數(shù)據(jù)管理操作。

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

  • 數(shù)據(jù)卷(Data Volumes)
  • 數(shù)據(jù)卷容器(Data Volumes Containers)

本節(jié)將首先介紹如何在容器內(nèi)創(chuàng)建數(shù)據(jù)卷闷盔,并且把本地的目錄或文件掛載到容器內(nèi)的數(shù)據(jù)卷中弯洗。接下來(lái)會(huì)介紹如何使用數(shù)據(jù)卷容器在容器和主機(jī)、容器和容器之間共享數(shù)據(jù)逢勾,并實(shí)現(xiàn)數(shù)據(jù)的備份和恢復(fù)牡整。

數(shù)據(jù)卷

數(shù)據(jù)卷是一個(gè)可供容器使用的特殊目錄,它繞過(guò)文件系統(tǒng)溺拱,可以提供很多有用的特性逃贝。

  • 數(shù)據(jù)卷可以在容器之間共享和重用
  • 對(duì)數(shù)據(jù)卷的修改會(huì)立馬生效
  • 對(duì)數(shù)據(jù)卷的更新不會(huì)影響鏡像
  • 卷會(huì)一直存在,直到?jīng)]有容器使用
    數(shù)據(jù)卷的使用迫摔,類(lèi)似于Linux下對(duì)目錄或文件進(jìn)行mount操作沐扳。
在容器內(nèi)創(chuàng)建一個(gè)數(shù)據(jù)卷

在用docker run命令的時(shí)候,使用-v標(biāo)記可以在容器內(nèi)創(chuàng)建一個(gè)數(shù)據(jù)卷句占,多次使用-v標(biāo)記可以創(chuàng)建多個(gè)數(shù)據(jù)卷沪摄。
下面使用training/webapp鏡像創(chuàng)建一個(gè)web容器,并創(chuàng)建一個(gè)數(shù)據(jù)卷掛載到容器的/webapp目錄:
docker run -d -P --name web -v /webapp training/webapp python app.py
注意:-P是允許外部訪問(wèn)容器需要暴露的端口

掛載一個(gè)主機(jī)目錄作為數(shù)據(jù)卷

使用-v標(biāo)記也可以指定掛載一個(gè)本地的已有目錄到容器中去作為數(shù)據(jù)卷:
docker run -d -P --name web -v /src/webapp:/opt/webapp training/webapp python app.py
上面的命令加載主機(jī)的/src/webapp目錄到容器的/opt/webapp目錄。用戶(hù)可以放置一些程序或數(shù)據(jù)到本地目錄中杨拐,然后在容器內(nèi)運(yùn)行和使用祈餐。

docker掛載數(shù)據(jù)卷的默認(rèn)權(quán)限是讀寫(xiě)(rw),用戶(hù)也可以通過(guò)ro指定為只讀哄陶。
docker run -d -P --name web -v /src/webapp:/opt/webapp:ro training/webapp python app.py
加了:ro之后昼弟,容器內(nèi)掛載的數(shù)據(jù)卷的數(shù)據(jù)就無(wú)法修改了。

掛載一個(gè)本地主機(jī)文件作為數(shù)據(jù)卷

-v標(biāo)記也可以從主機(jī)掛載單個(gè)文件到容器中作為數(shù)據(jù)卷:
docker run --rm -it -v ~/.bash_history: ~/.bash_history ubuntu /bin/bash
這樣就可以記錄在容器輸入過(guò)的命令歷史了奕筐。(不推薦此種方式舱痘,建議直接掛載文件所在的目錄)

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

如果用戶(hù)需要在容器之間共享一些持續(xù)更新的數(shù)據(jù),最簡(jiǎn)單的方式就是數(shù)據(jù)卷容器离赫。數(shù)據(jù)卷容器其實(shí)就是一個(gè)普通的容器芭逝,專(zhuān)門(mén)用它提供數(shù)據(jù)卷供其他容器掛載,使用方式如下:

首先創(chuàng)建一個(gè)數(shù)據(jù)卷容器dbdata渊胸,并在其中創(chuàng)建一個(gè)數(shù)據(jù)卷掛載到/dbdata:
docker run -it -v /dbdata --name dbdata ubuntu

然后旬盯,可以在其他容器中使用--volumes-from來(lái)掛載dbdata容器中的數(shù)據(jù)卷,例如創(chuàng)建db1和db2兩個(gè)容器翎猛,并從dbdata容器掛載數(shù)據(jù)卷:
docker run -it --volumes-from dbdata --name db1 ubuntu
docker run -it --volumes-from dbdata --name db2 ubuntu

此時(shí)胖翰,容器db1和db2都掛載同一個(gè)數(shù)據(jù)卷到相同的/dbdata目錄。三個(gè)容器任何一方在該目錄下的寫(xiě)入切厘,其他容器都可以看得到萨咳。

而且還可以使用--volumes-from參數(shù)從多個(gè)容器掛載多個(gè)數(shù)據(jù)卷,還可以從其他已經(jīng)掛載了容器卷的容器來(lái)掛載數(shù)據(jù)卷:
docker run -d --name db3 --volumes-from db1 training/postgres

注意:使用--volumes-from參數(shù)所掛載數(shù)據(jù)卷的容器自身并不需要保持在運(yùn)行狀態(tài)

如果刪除了掛載的容器(包括dbdata疫稿、db1培他、db2),數(shù)據(jù)卷并不會(huì)被自動(dòng)刪除遗座。如果要?jiǎng)h除一個(gè)數(shù)據(jù)卷舀凛,必須在刪除最后一個(gè)還掛載著它的容器時(shí)顯式地使用docker rm -v命令來(lái)指定同時(shí)刪除關(guān)聯(lián)的容器。

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

可以利用數(shù)據(jù)卷容器對(duì)其中的數(shù)據(jù)卷進(jìn)行備份途蒋、恢復(fù)猛遍,以實(shí)現(xiàn)數(shù)據(jù)的遷移。

備份

使用下面的命令來(lái)備份dbdata數(shù)據(jù)卷容器內(nèi)的數(shù)據(jù)卷:
docker run --volumes-from dbdata -v ${pwd}:/backup --name worker ubuntu tar cvf /backup/backup.tar /dbdata
首先利用ubuntu鏡像創(chuàng)建了一個(gè)容器worker号坡,使用--volumes-from dbdata參數(shù)來(lái)讓worker容器掛載dbdata容器的數(shù)據(jù)卷(即dbdata數(shù)據(jù)卷)懊烤;使用-v ${pwd}:/backup參數(shù)來(lái)掛載本地的當(dāng)前目錄到worker容器的/backup目錄。
worker容器啟動(dòng)后筋帖,使用了tar cvf /backup/backup.tar /dbdata命令來(lái)將/dbdata下內(nèi)容備份為容器內(nèi)的/backup/backup.tar奸晴,即宿主主機(jī)當(dāng)前目錄下的backup.tar。

恢復(fù)

如果要恢復(fù)數(shù)據(jù)到一個(gè)容器日麸,首先創(chuàng)建一個(gè)帶有數(shù)據(jù)卷的容器dbdata2
docker run -v /dbdata --name dbdata2 ubuntu /bin/bash
然后創(chuàng)建另一個(gè)新的容器寄啼,掛載dbdata2的容器逮光,并使用untar解壓備份文件到所掛載的容器卷中即可:
docker run --volumes-from dbdata2 -v ${pwd}:/backup busybox tar xvf /backup/backup.tar

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市墩划,隨后出現(xiàn)的幾起案子涕刚,更是在濱河造成了極大的恐慌,老刑警劉巖乙帮,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件杜漠,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡察净,警方通過(guò)查閱死者的電腦和手機(jī)驾茴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)氢卡,“玉大人锈至,你說(shuō)我怎么就攤上這事∫肭兀” “怎么了峡捡?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)筑悴。 經(jīng)常有香客問(wèn)我们拙,道長(zhǎng),這世上最難降的妖魔是什么阁吝? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任砚婆,我火速辦了婚禮,結(jié)果婚禮上求摇,老公的妹妹穿的比我還像新娘射沟。我一直安慰自己,他們只是感情好与境,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著猖吴,像睡著了一般摔刁。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上海蔽,一...
    開(kāi)封第一講書(shū)人閱讀 51,541評(píng)論 1 305
  • 那天共屈,我揣著相機(jī)與錄音,去河邊找鬼党窜。 笑死拗引,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的幌衣。 我是一名探鬼主播矾削,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼壤玫,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了哼凯?” 一聲冷哼從身側(cè)響起欲间,我...
    開(kāi)封第一講書(shū)人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎断部,沒(méi)想到半個(gè)月后猎贴,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蝴光,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年她渴,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蔑祟。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡趁耗,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出做瞪,到底是詐尸還是另有隱情对粪,我是刑警寧澤,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布装蓬,位于F島的核電站著拭,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏牍帚。R本人自食惡果不足惜儡遮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望暗赶。 院中可真熱鬧鄙币,春花似錦、人聲如沸蹂随。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)岳锁。三九已至绩衷,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間激率,已是汗流浹背咳燕。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留乒躺,地道東北人招盲。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像嘉冒,于是被迫代替她去往敵國(guó)和親曹货。 傳聞我的和親對(duì)象是個(gè)殘疾皇子咆繁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355

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

  • 容器中管理數(shù)據(jù)主要有兩種方式: 數(shù)據(jù)卷(Data Volumes) 數(shù)據(jù)卷容器(Data Volume Conta...
    劉遠(yuǎn)鑫閱讀 429評(píng)論 0 0
  • 以往我們想安裝某個(gè)服務(wù)器應(yīng)用,需要提前安裝各種依賴(lài)包控乾,然后安裝目標(biāo)應(yīng)用么介,然后是各種設(shè)置。蜕衡。壤短。幸運(yùn)的話,也許1慨仿,2個(gè)...
    simon_2017閱讀 465評(píng)論 0 4
  • 五久脯、Docker 端口映射 無(wú)論如何,這些 ip 是基于本地系統(tǒng)的并且容器的端口非本地主機(jī)是訪問(wèn)不到的镰吆。此外帘撰,除了...
    R_X閱讀 1,748評(píng)論 0 7
  • 一覺(jué)醒來(lái): (1) 衛(wèi)計(jì)委發(fā)布意見(jiàn),城鄉(xiāng)獨(dú)生子女傷殘死亡家庭扶助標(biāo)準(zhǔn)統(tǒng)一 (2) 中航協(xié)發(fā)布首批民航旅客不文明記錄...
    朱司機(jī)閱讀 226評(píng)論 0 0
  • 當(dāng)我開(kāi)始動(dòng)腦寫(xiě)的時(shí)候万皿,說(shuō)明我是真的沒(méi)想法了 有人說(shuō)喜歡你 并不是因?yàn)槟闶悄敲吹囊鄢霰?也許只是那天下午陽(yáng)光正好 ...
    f冗別閱讀 401評(píng)論 0 1