Docker基礎(chǔ):數(shù)據(jù)卷技術(shù)介紹

今天給大家簡(jiǎn)單聊聊Docker中的數(shù)據(jù)卷知識(shí)。
Docker數(shù)據(jù)管理



大家在生產(chǎn)環(huán)境使用Docker部署項(xiàng)目的時(shí)候,基本都需要進(jìn)行數(shù)據(jù)持久化、或多個(gè)容器間進(jìn)行數(shù)據(jù)共享,這個(gè)就需要容器的數(shù)據(jù)管理來(lái)進(jìn)行操作。
1.2 Docker數(shù)據(jù)持久化
Docker數(shù)據(jù)持久化就是容器中的數(shù)據(jù)不會(huì)隨著容器的結(jié)束而隨之結(jié)束,在Docker中如果需要實(shí)現(xiàn)數(shù)據(jù)的持久化,前提把數(shù)據(jù)從Docker容器掛載到宿主主機(jī)上去。
1.2 容器中數(shù)據(jù)管理的方式
數(shù)據(jù)卷(Data Volumes):容器內(nèi)的數(shù)據(jù)直接映射到宿主主機(jī)環(huán)境
數(shù)據(jù)卷容器(Data Volume Containers):使用特定容器維護(hù)數(shù)據(jù)卷
2、數(shù)據(jù)卷的介紹
數(shù)據(jù)卷是一個(gè)可供容器內(nèi)部使用的特殊目錄,它將宿主主機(jī)的操作系統(tǒng)目錄直接映射進(jìn)容器內(nèi),類(lèi)似于Linux系統(tǒng)中的 mount 操作。
2.1 數(shù)據(jù)卷作用
容器的持久化、容器間繼承 + 共享數(shù)據(jù)
2.2 卷的概念
本質(zhì)就是目錄或文件,存在于一個(gè)或多個(gè)容器中,由docker掛載到容器中,但不屬于聯(lián)合文件系統(tǒng),因此能夠繞過(guò)合文件系統(tǒng)提供一些用于持續(xù)存儲(chǔ)或共享數(shù)據(jù)的特性。卷的目的就是實(shí)現(xiàn)數(shù)據(jù)的持久化,完全獨(dú)立于容器的生存周期,因此Docker不會(huì)在容器刪除時(shí)同時(shí)刪除其掛載的數(shù)據(jù)卷。
2.3 數(shù)據(jù)卷的特點(diǎn)
數(shù)據(jù)卷可以在容器之間實(shí)現(xiàn)共享和重用,容器間傳遞數(shù)據(jù)將變的高效方便
對(duì)數(shù)據(jù)卷內(nèi)數(shù)據(jù)的修改會(huì)立馬生效,無(wú)論是容器內(nèi)操作還是本地操作
對(duì)數(shù)據(jù)卷的更新不會(huì)影響Docker鏡像,解耦了應(yīng)用和數(shù)據(jù)
數(shù)據(jù)卷的生命令周期不受容器的影響,除非你卸載它。
3、Docker數(shù)據(jù)卷常見(jiàn)的作用
數(shù)據(jù)持久化:比如MySQL數(shù)據(jù)庫(kù),數(shù)據(jù)目錄要掛載到宿主主機(jī)或者別的地方,否則MySQL容器刪除你的數(shù)據(jù)也會(huì)隨之刪除。
同步操作:比如我需要修改nginx的配置文件,不需要在進(jìn)入容器內(nèi)部,可以直接修改數(shù)據(jù)卷對(duì)應(yīng)的文件就可以進(jìn)行配置實(shí)時(shí)同步。
容器間數(shù)據(jù)共享:多個(gè)容器之間需要數(shù)據(jù)共享的時(shí)候
4、操作數(shù)據(jù)卷
4.1 常用命令

docker volume 指令值

指令值:
create:創(chuàng)建一個(gè)volume
inspect:顯示一個(gè)或多個(gè)volume的信息
ls :列出所有的volume
prune :刪除未使用的volume
rm:刪除一個(gè)或多個(gè)指定的volume

4.2 掛載數(shù)據(jù)卷
創(chuàng)建數(shù)據(jù)卷myvolume

docker volume create myvolume

運(yùn)行nginx容器

  docker run --name nginxtest -v myvolume:/usr/share/nginx/html -p 8000:80 -d nginx



查看數(shù)據(jù)卷掛載信息

docker volume inspect myvolume



數(shù)據(jù)卷新增文件并查看容器內(nèi)掛載的目錄文件是否同步

cd /var/lib/docker/volumes/myvolume/_data #進(jìn)入容器卷目錄
vi test.html #創(chuàng)建test.html 目錄
ls







     
進(jìn)入容器查看目錄是否正常同步

docker exec -it nginxtest /bin/bash
cd /usr/share/nginx/html
ls



容器內(nèi)刪除test.html 查看myvolume是否也刪除了

rm test.html


 


作者:郝光明 IT技術(shù)分享社區(qū)


歡迎關(guān)注:IT技術(shù)分享社區(qū)