Docker - 掛載目錄(bind mounts)和Volume是不同的

一直一來,對于多個容器需要共享訪問同一數(shù)據(jù)目錄,或者需要持久化容器內(nèi)數(shù)據(jù)(如數(shù)據(jù)庫)時,我們都是采用掛載目錄形式(bind mounts),將宿主機的某一目錄掛載到容器內(nèi)的指定目錄券勺,這種方式能解決問題,但這種方式也一直有一些缺點:

容器在不同的服務(wù)器部署需要根據(jù)實際磁盤掛載目錄修改路徑

不同操作系統(tǒng)的文件和目錄權(quán)限會搞得你昏頭轉(zhuǎn)向灿里,火冒三丈???

而這些問題,使用Volume就可以解決匣吊。我們先來對比一下bind mounts和docker volume儒拂,然后看volume是如何解決bind mounts的問題的。先來看一張圖:

?

此圖來自docker文檔

這張圖說明bind mount和volume其實都是利用的宿主機的文件系統(tǒng)色鸳,不同之處在于volume是docker自身管理的目錄中的子目錄侣灶,所以就不存在權(quán)限引發(fā)的掛載的問題了,并且目錄路徑是docker自身管理的缕碎,所以也不需要在不同的服務(wù)器上指定不同的路徑褥影,你不需要關(guān)心路徑(其實也不全是,下面會關(guān)心 ??)咏雌。接下來就來看看bind mount和volume的不同用法吧凡怎。

1. 容器在不同的服務(wù)器部署需要根據(jù)實際磁盤掛載目錄修改路徑

例如:在Linux系統(tǒng)中校焦,我們經(jīng)常使用"/var/someDir"作為掛載目錄,然而到了Mac上统倒,"/var/"這個目錄并不是真實存在的寨典,它是一個目錄的軟鏈接,而且這個目錄也不是"Docker for Mac"默認共享的目錄房匆,需要添加耸成,在Windows系統(tǒng)中更是如此。

?

?

2. 不同操作系統(tǒng)的文件和目錄權(quán)限會搞得你昏頭轉(zhuǎn)向浴鸿,火冒三丈???

本來在Linux系統(tǒng)中測試的挺好井氢,結(jié)果到了Windows上掛載路徑各種問題,這里就不一一細說了岳链,沒有遇到這些問題的可以嘗試一下花竞,體驗體驗。不過在Mac中還好一些掸哑,畢竟和Linux同宗约急。

Docker中除了掛載方式,還有一種Volume可以持久化數(shù)據(jù)苗分,說到這里有點汗顏厌蔽,使用Docker這么久,一直把掛載當成Volume摔癣,不過也不怪我奴饮,Docker-compose文件中在volume段中寫容器和宿主機掛載路徑映射關(guān)系也沒問題,就一直這么誤解了供填。拐云。(花式甩鍋??)

?

其實“掛載”和“Docker Volume”并不是一回事罢猪,有一定的區(qū)別近她,Docker Volume是聲明式的,Docker Engine本身會占用系統(tǒng)的某個目錄膳帕,Linux一般為"/var/lib/docker"粘捎,Mac和Windows下都可以調(diào)節(jié)。當我們聲明一個volume危彩,Docker會默認在占用的路徑下為volume分配一個路徑攒磨,例如:

?

相對于掛載,volume是Docker Engine在自己的“地盤”分配了一個路徑作為掛載點汤徽,自己地盤的權(quán)限肯定是安排的明明白白娩缰。所以,以上掛載宿主機路徑的問題都解決了谒府。??

在使用時拼坎,直接用volume名稱代替宿主機路徑名就行浮毯,假設(shè)我們上面創(chuàng)建了名為"test_vol"的volume:

docker run -d -v "test_vol:/var/data"?some_image,這樣就將容器內(nèi)的/var/data目錄掛載到了"test_vol"的掛載點泰鸡;

docker-compose中類似债蓝,不過要在docker-compose.yaml文件中聲明volume,我們還是拿上面的例子修改一下:

?

Attention !!??????????

需要注意 volume 會引起 docker目錄膨脹盛龄,因為既要存鏡像饰迹,又要存 volume,最好不要放在系統(tǒng)盤余舶,將 docker 的安裝目錄配置到其他更大的掛載盤啊鸭。

volume 還有一個不如bind mount的地方,不能直接掛載文件欧芽,例如掛載nginx容器的配置文件:nginx.conf莉掂。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市千扔,隨后出現(xiàn)的幾起案子憎妙,更是在濱河造成了極大的恐慌,老刑警劉巖曲楚,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件厘唾,死亡現(xiàn)場離奇詭異,居然都是意外死亡龙誊,警方通過查閱死者的電腦和手機抚垃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來趟大,“玉大人鹤树,你說我怎么就攤上這事⊙沸啵” “怎么了罕伯?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長叽讳。 經(jīng)常有香客問我追他,道長,這世上最難降的妖魔是什么岛蚤? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任邑狸,我火速辦了婚禮,結(jié)果婚禮上涤妒,老公的妹妹穿的比我還像新娘单雾。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布硅堆。 她就那樣靜靜地躺著蜂奸,像睡著了一般。 火紅的嫁衣襯著肌膚如雪硬萍。 梳的紋絲不亂的頭發(fā)上扩所,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天,我揣著相機與錄音朴乖,去河邊找鬼祖屏。 笑死,一個胖子當著我的面吹牛买羞,可吹牛的內(nèi)容都是我干的袁勺。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼畜普,長吁一口氣:“原來是場噩夢啊……” “哼期丰!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起吃挑,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤钝荡,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后舶衬,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體埠通,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年逛犹,在試婚紗的時候發(fā)現(xiàn)自己被綠了端辱。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡虽画,死狀恐怖舞蔽,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情码撰,我是刑警寧澤渗柿,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站灸拍,受9級特大地震影響做祝,放射性物質(zhì)發(fā)生泄漏砾省。R本人自食惡果不足惜鸡岗,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望编兄。 院中可真熱鬧轩性,春花似錦、人聲如沸狠鸳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至卸察,卻和暖如春脯厨,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背坑质。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工合武, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人涡扼。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓稼跳,卻偏偏與公主長得像,于是被迫代替她去往敵國和親吃沪。 傳聞我的和親對象是個殘疾皇子汤善,可洞房花燭夜當晚...
    茶點故事閱讀 43,486評論 2 348

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