docker volume的理解

volume的創(chuàng)建

為了能夠保存(持久化)數(shù)據(jù)以及共享容器間的數(shù)據(jù),Docker提出了Volume的概念.簡(jiǎn)單來(lái)說(shuō),Volume就是目錄或者文件,它可以繞過(guò)默認(rèn)的聯(lián)合文件系統(tǒng),而以正常的文件或者目錄的形式存在于宿主機(jī)上.

我們可以通過(guò)兩種方式來(lái)初始化Volume,這兩種方式有些細(xì)小而又重要的差別.我們可以在運(yùn)行時(shí)使用-v來(lái)聲明Volume:

[root@node1 volume]# docker run -it --name container-test -h CONTAINER -v /data busybox /bin/sh  
/ # 
/ # ls /data

上面的命令會(huì)將/data掛載到容器中,并繞過(guò)聯(lián)合文件系統(tǒng),我們可以在主機(jī)上直接操作該目錄.任何在該鏡像/data路徑的文件的文件都會(huì)被復(fù)制到Volume.我們可以使用docker inspect命令找到Volume在主機(jī)上的存儲(chǔ)位置:

$docker inspect container-test  
    "Mounts": [  
        {  
            "Name": "6407cbb6700a4076cdeeef60629f1748ff34310102480a3f702fd3fee9e69134",  
            "Source": "/var/lib/docker/volumes/6407cbb6700a4076cdeeef60629f1748ff34310102480a3f702fd3fee9e69134/_data",  
            "Destination": "/data",  
            "Driver": "local",  
            "Mode": "",  
            "RW": true  
        }  
    ],

這說(shuō)明Docker把在/var/lib/docker下的某個(gè)目錄掛載到了容器內(nèi)的/data目錄下.讓我們從主機(jī)添加文件都此文件夾下:

root@node1:~# touch /var/lib/docker/volumes/6407cbb6700a4076cdeeef60629f1748ff34310102480a3f702fd3fee9e69134/_data/test-file

進(jìn)入容器

root@node1:~# docker exec -it  container-test /bin/sh  
root@CONTAINER:/# ls /data/  
test-file

只要將主機(jī)的目錄掛載到容器的目錄上,那改變就會(huì)立即生效.我們可以在Dockerfile中通過(guò)使用VOLUME指令來(lái)達(dá)到相同的目的:

FROM ubunut VOLUME /data

但是還有另一件只有-v參數(shù)能夠做到而Dockerfile是做不到的事情就是在容器上掛載指定的主機(jī)目錄.例如:
(冒號(hào)前面是主機(jī)的目錄 : 冒號(hào)后面是docker容器的目錄)

root@node1:~# docker run -v /data/mysql:/data/mysql busybox

該命令將掛載主機(jī)的/data/mysql目錄到容器內(nèi)的/data目錄上.任何在/data/mysql目錄下的文件都會(huì)出現(xiàn)在容器內(nèi).這對(duì)于在主機(jī)和容器之間共享文件是非常有用的,例如掛載需要編譯的源代碼.為了保證可移植性,掛載主機(jī)目錄不需要從Dockerfile指定.當(dāng)使用-v參數(shù)時(shí),鏡像目錄下的任何文件都不會(huì)被復(fù)制到Volume中.

數(shù)據(jù)共享
如果要授權(quán)一個(gè)容器訪問(wèn)另一個(gè)容器的Volume,我們可以使用-volumes-from參數(shù)來(lái)執(zhí)行docker run

root@node1:~# docker run -it -h NEWCONTAINER --volumes-from container-test busybox /bin/bash  
root@NEWCONTAINER:/# ls /data/  
test-file

值得注意的是,就算你這個(gè)時(shí)候把container-test停止了,它仍然會(huì)起作用.只要有容器連接Volume,他就不會(huì)被刪除,如果這個(gè)時(shí)候你執(zhí)行:

root@node1:~# docker rm container-test  
Error response from daemon: Conflict, You cannot remove a running container. Stop the container before attempting removal or use -f  
Error: failed to remove containers: [container-test]

數(shù)據(jù)容器
通常使用數(shù)據(jù)容器來(lái)持久化數(shù)據(jù)庫(kù)和數(shù)據(jù)文件明未。

$ docker run --name dbdata mysql echo "data only"

創(chuàng)建了一個(gè)名為dbdata的數(shù)據(jù)容器槽华,運(yùn)行完echo之后就停止了。數(shù)據(jù)容器是不需要運(yùn)行的趟妥,只要?jiǎng)?chuàng)建好了就可以了猫态。

$ docker run -d --volumes-from dbdata --name db1 mysql

啟動(dòng)一個(gè)數(shù)據(jù)庫(kù)服務(wù)容器,連接到dbdata數(shù)據(jù)容器上披摄。

注意:

數(shù)據(jù)容器不需運(yùn)行亲雪,純粹是在浪費(fèi)資源
不需為數(shù)據(jù)容器單獨(dú)使用一個(gè)小的鏡像,直接使用數(shù)據(jù)庫(kù)鏡像本身就可以了
刪除Volumes
這個(gè)功能太重要了,如果你已經(jīng)使用docker run來(lái)刪除你的容器,那可能會(huì)有很多孤立的Volume仍在占用著空間.

Voulume可以被刪除的條件:
1.該容器可以用docker rm -v來(lái)刪除且沒(méi)有其他容器連接到該Volume(以及主機(jī)目錄是也沒(méi)被指定為Volume).注意,-v是必不可少的.
2.docker run中使用rm參數(shù).

數(shù)據(jù)備份
如果要備份mysql數(shù)據(jù)庫(kù)疚膊,我們需要備份數(shù)據(jù)容器中的/var/lib/mysql文件夾义辕。

$ docker run --rm --volumes-from dbdata -v $(pwd):/backup ubuntu tar zcvf /backup/mysql.tar.gz /var/lib/mysql
此時(shí)就會(huì)在當(dāng)前目錄下生成一個(gè)mysql.tar.gz文件。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末寓盗,一起剝皮案震驚了整個(gè)濱河市灌砖,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌傀蚌,老刑警劉巖基显,帶你破解...
    沈念sama閱讀 219,490評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谅摄,死亡現(xiàn)場(chǎng)離奇詭異蚓让,居然都是意外死亡排吴,警方通過(guò)查閱死者的電腦和手機(jī)污桦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)植影,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)喘沿,“玉大人暑劝,你說(shuō)我怎么就攤上這事铜邮【俗” “怎么了酱虎?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,830評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)擂涛。 經(jīng)常有香客問(wèn)我读串,道長(zhǎng)聊记,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,957評(píng)論 1 295
  • 正文 為了忘掉前任恢暖,我火速辦了婚禮排监,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘杰捂。我一直安慰自己舆床,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,974評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布嫁佳。 她就那樣靜靜地躺著挨队,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蒿往。 梳的紋絲不亂的頭發(fā)上盛垦,一...
    開(kāi)封第一講書(shū)人閱讀 51,754評(píng)論 1 307
  • 那天,我揣著相機(jī)與錄音瓤漏,去河邊找鬼腾夯。 笑死,一個(gè)胖子當(dāng)著我的面吹牛蔬充,可吹牛的內(nèi)容都是我干的蝶俱。 我是一名探鬼主播,決...
    沈念sama閱讀 40,464評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼饥漫,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼跷乐!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起趾浅,我...
    開(kāi)封第一講書(shū)人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎馒稍,沒(méi)想到半個(gè)月后皿哨,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,847評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡纽谒,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,995評(píng)論 3 338
  • 正文 我和宋清朗相戀三年证膨,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鼓黔。...
    茶點(diǎn)故事閱讀 40,137評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡央勒,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出澳化,到底是詐尸還是另有隱情崔步,我是刑警寧澤,帶...
    沈念sama閱讀 35,819評(píng)論 5 346
  • 正文 年R本政府宣布缎谷,位于F島的核電站井濒,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜瑞你,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,482評(píng)論 3 331
  • 文/蒙蒙 一酪惭、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧者甲,春花似錦春感、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,023評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至寇钉,卻和暖如春刀疙,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背扫倡。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,149評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工谦秧, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人撵溃。 一個(gè)月前我還...
    沈念sama閱讀 48,409評(píng)論 3 373
  • 正文 我出身青樓疚鲤,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親缘挑。 傳聞我的和親對(duì)象是個(gè)殘疾皇子集歇,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,086評(píng)論 2 355

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

  • 轉(zhuǎn)載自 http://blog.opskumu.com/docker.html 一、Docker 簡(jiǎn)介 Docke...
    極客圈閱讀 10,501評(píng)論 0 120
  • 五语淘、Docker 端口映射 無(wú)論如何诲宇,這些 ip 是基于本地系統(tǒng)的并且容器的端口非本地主機(jī)是訪問(wèn)不到的。此外惶翻,除了...
    R_X閱讀 1,751評(píng)論 0 7
  • Docker從2013年發(fā)布第一個(gè)版本以來(lái)姑蓝,已經(jīng)火遍全球,技術(shù)迭代也比較頻繁吕粗,其周邊產(chǎn)品和技術(shù)也越來(lái)越豐富纺荧。Doc...
    歸海聽(tīng)雪閱讀 12,285評(píng)論 7 44
  • 親愛(ài)的女兒,你即將進(jìn)入小學(xué)了颅筋,這是你人生的一次說(shuō)重要也不是最重要的轉(zhuǎn)折宙暇,爸爸有些話想對(duì)你說(shuō),在未來(lái)的5议泵、6年中爸爸...
    肥魚(yú)胡說(shuō)閱讀 15,749評(píng)論 2 3
  • 又是一年的5月肢簿,也又到了一年一度吃櫻桃的時(shí)節(jié)靶剑。櫻桃的時(shí)令大約有一周左右蜻拨,珍稀度堪比曇花。如果不小心錯(cuò)過(guò)了時(shí)節(jié)桩引,也只...
    易蕭蕭閱讀 300評(píng)論 0 0