container的存儲(chǔ)

container 存儲(chǔ)是臨時(shí)的,也就是說當(dāng)這個(gè)container被刪除之后,所有的內(nèi)容都不會(huì)保留。容器化的應(yīng)用總是被假設(shè)在一個(gè)空的存儲(chǔ)上運(yùn)行,這就使的創(chuàng)建和銷毀容器非常簡單。

然而,如果容器重啟前后需要數(shù)據(jù)一致,則僅有臨時(shí)的container的存儲(chǔ)是不夠的,像數(shù)據(jù)庫。為了支撐這些應(yīng)用,則需要為container提供持續(xù)化存儲(chǔ)。

一個(gè)正在運(yùn)行的container實(shí)際上是在其base container image上重新建了一層,這一層就是container storage. 首先,這一層是僅供該容器讀寫,創(chuàng)建工作文件,臨時(shí)文件和日志文件等。這些文件是變化的,這些文件的丟失不會(huì)影響到container中的application. container的storage層是獨(dú)屬當(dāng)前所運(yùn)行的容器的。即使是基于同一個(gè)image創(chuàng)建的container也不會(huì)共享這個(gè)storage而是擁有各自的。

容器化的應(yīng)用不應(yīng)該用container storage去存儲(chǔ)持久化的數(shù)據(jù)。因?yàn)槌食绦虮旧聿荒芸刂七@些數(shù)據(jù)會(huì)被保存多久。盡管這樣作有時(shí)候也可以保持一段時(shí)間。

docker會(huì)保留已經(jīng)停止的container一段時(shí)間,以便于調(diào)試和定位問題,例如docker logs去查log等。但是container storage是一個(gè)臨時(shí)觀念。重啟container,將會(huì)獲取一個(gè)新的container storage.

docker 進(jìn)程可以申請(qǐng)綁定host上的目錄到一個(gè)正在運(yùn)行的container. 這個(gè)host目錄可以看成這個(gè)容器化程序的container storage的一部分,就像一個(gè)遠(yuǎn)端的網(wǎng)絡(luò)卷,可以看成這個(gè)container文件系統(tǒng)的一部分,但是這個(gè)host的目錄當(dāng)container停止的時(shí)候不會(huì)被回收而可被其他container利用。

例如。一個(gè)數(shù)據(jù)庫container可以在啟動(dòng)的時(shí)候綁定一個(gè)host目錄去存儲(chǔ)數(shù)據(jù)庫文件。如果這個(gè)數(shù)據(jù)庫的容器掛了,我們可以重新創(chuàng)建一個(gè)container綁定同一個(gè)host目錄,已保證數(shù)據(jù)庫數(shù)據(jù)持續(xù)可用。而對(duì)數(shù)據(jù)庫container而言,host目錄的路徑并不重要,因?yàn)閷?duì)container而言,它使用的路徑而是掛載后的路徑。

但是我們需要注意host目錄的權(quán)限。container的作為操作系統(tǒng)中的進(jìn)程同樣是基于userID和groupID的,所以請(qǐng)卻到該進(jìn)程的用戶可以訪問這個(gè)host目錄。

在RHEL,這個(gè)host目錄還需要配置合適的SELinux上下文,可通過類似“chcon -t svirt_sandbox_file_t /var/dbfiles”的命令來實(shí)現(xiàn)。

等創(chuàng)建和配置了host目錄后,我們就可以用“-v”指令掛載到container了。

例如,host目錄為"/var/dbfiles", 我們預(yù)期其在container內(nèi)部為“/var/lib/mysql",則我們可以用命令 “docker run -v /var/dbfiles:/var/lib/mysql mysql”來實(shí)現(xiàn)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容