一. 數(shù)據(jù)卷
想必大家都使用過(guò)U盤凝化、光盤等外部存儲(chǔ)設(shè)備,通過(guò)將U盤等外部存儲(chǔ)設(shè)備掛載到系統(tǒng)中的一個(gè)掛載點(diǎn)酬荞,即可實(shí)現(xiàn)對(duì)這些外部設(shè)備的讀寫操作缘圈。
數(shù)據(jù)卷即供容器使用的一個(gè)特殊目錄,和Linux系統(tǒng)掛在U盤等存儲(chǔ)設(shè)備時(shí)使用的mount命令非常類似袜蚕。對(duì)數(shù)據(jù)卷的修改立即生效糟把,并且不會(huì)影響生成的鏡像,卷會(huì)一直存在牲剃,直到?jīng)]有容器使用它遣疯。
通常我們會(huì)掛載一個(gè)主機(jī)目錄作為數(shù)據(jù)卷,如數(shù)據(jù)庫(kù)的存儲(chǔ)目錄凿傅;也會(huì)掛載一個(gè)主機(jī)文件作為數(shù)據(jù)卷缠犀,如應(yīng)用的配置文件。線面聪舒,我們分別介紹如何掛載一個(gè)目錄辨液,以及如何掛載一個(gè)文件作為數(shù)據(jù)卷。
1.1 掛載一個(gè)主機(jī)目錄作為數(shù)據(jù)卷
掛載數(shù)據(jù)卷的命令為:
docker run -itd --name centos01 -v /opt/data/centos01:/data 192.168.255.128:5000/centos
使用 -v
參數(shù)創(chuàng)建數(shù)據(jù)卷箱残,并且可以使用多個(gè) -v
參數(shù)為容器創(chuàng)建多個(gè)數(shù)據(jù)卷滔迈。冒號(hào)之前的部分表示宿主機(jī)的真實(shí)目錄,冒號(hào)之后的部分表示容器中的虛擬目錄被辑,即掛載點(diǎn)燎悍。
對(duì)數(shù)據(jù)卷的操作,其實(shí)都是對(duì)宿主機(jī)真實(shí)目錄的操作:進(jìn)入容器盼理,在 /data 下創(chuàng)建 c.txt 文件谈山,則在宿主機(jī)的真實(shí)目錄中也將創(chuàng)建一個(gè) c.txt 文件(注:和數(shù)據(jù)卷相關(guān)的目錄,無(wú)論是容器還是宿主機(jī)的目錄宏怔,都將在創(chuàng)建和運(yùn)行容器時(shí)自動(dòng)生成):
此外奏路,創(chuàng)建數(shù)據(jù)卷時(shí),還可以使用 ro 參數(shù)來(lái)指定只讀數(shù)據(jù)卷(默認(rèn)為rw臊诊,可讀可寫)鸽粉,容器將無(wú)法對(duì)數(shù)據(jù)卷做修改,詳情如下:
1.2 掛載一個(gè)文件作為數(shù)據(jù)卷
注:宿主機(jī)中必須存在要掛載的文件妨猩,否則將創(chuàng)建目錄潜叛,并掛載相應(yīng)的目錄秽褒。
二. 數(shù)據(jù)卷容器
數(shù)據(jù)卷實(shí)現(xiàn)了在在宿主機(jī)和容器之間共享數(shù)據(jù)壶硅,數(shù)據(jù)卷容器則可以幫我們實(shí)現(xiàn)在容器間共享數(shù)據(jù)威兜。數(shù)據(jù)卷容器的本質(zhì)也是一個(gè)普通數(shù)據(jù)卷,只不過(guò)它專門提供其它容器掛載庐椒,可以在容器之間共享和重用椒舵。使用數(shù)據(jù)卷容器,首先需要在容器內(nèi)創(chuàng)建一個(gè)數(shù)據(jù)卷约谈,作為數(shù)據(jù)卷容器:
數(shù)據(jù)卷容器使用 -v 參數(shù)指定掛載容器的目錄笔宿,此處為 centos01 容器中的 /data 目錄。進(jìn)入容器 centos01 并在 /data 目錄下創(chuàng)建了2個(gè)文件棱诱。
接下來(lái)泼橘,我們創(chuàng)建并運(yùn)行2個(gè)容器 centos02 和 centos03,并分別掛載 centos01 數(shù)據(jù)卷容器:
進(jìn)入容器 centos02 迈勋,在/data目錄下即可看到我們?cè)?centos01 數(shù)據(jù)卷容器中創(chuàng)建的文件:
進(jìn)入容器 centos03炬灭,在 /data
目錄下即可看到我們?cè)?centos01 數(shù)據(jù)卷容器中創(chuàng)建的文件,以及剛剛在 centos02 中創(chuàng)建的文件:
綜上靡菇,借助數(shù)據(jù)卷容器 centos01重归,實(shí)現(xiàn)了在容器 centos01、centos02 和 centos03 之間的數(shù)據(jù)共享厦凤。