目錄
- Docker容器數(shù)據(jù)卷技術(shù)介紹
- 一、卷技術(shù)介紹
- 二、使用數(shù)據(jù)卷
Docker容器數(shù)據(jù)卷技術(shù)介紹
一、卷技術(shù)介紹
現(xiàn)在我們知道docker的理念就是把應(yīng)用和環(huán)境打包成鏡像,方便我們?nèi)ミ\(yùn)行容器。
但是現(xiàn)在有一個(gè)問題,比如我容器里的mysql存了好多的數(shù)據(jù),那萬一容器被刪除,數(shù)據(jù)是不是就沒了?這顯然不合適。
于是,一個(gè)新的需求產(chǎn)生了:將數(shù)據(jù)存儲在容器之外的地方,比如本地。對應(yīng)的解決方案就是卷技術(shù)了,通過它,將容器中產(chǎn)生的數(shù)據(jù)同步到本地,讓容器之間可以共享數(shù)據(jù)。
卷技術(shù),說白了就是目錄的掛載,將容器內(nèi)的目錄掛載到linux上。如圖所示,將容器里的/usr/mysql
掛載到外部linux下的/home/mysql
。現(xiàn)在不僅mysql容器可以使用,其他的2個(gè)容器同樣可以使用,實(shí)現(xiàn)了數(shù)據(jù)共享。
所以,卷技術(shù)的關(guān)鍵詞:持久化、同步、數(shù)據(jù)共享。
二、使用數(shù)據(jù)卷
使用命令-v
。
docker run -it -v 主機(jī)目錄:容器目錄
現(xiàn)在我要啟動centos鏡像,并且把容器內(nèi)的/home
目錄,掛載到主機(jī)的/home/test/
目錄下:
docker run -it -v /home/test:/home centos /bin/bash
可以看到啟動容器成功,為了方便,我多開一個(gè)窗口。
這時(shí)候用docker inspect
命令來查看容器,可以看到掛載情況。
docker inspect 370ff4e87083
找到Mounts
,可以看到具體綁定明細(xì)。
現(xiàn)在容器內(nèi)的/home
目錄下是空的,對應(yīng)的主機(jī)的/home/test/
下也是空的。
接著,我在容器內(nèi)的/home下新建個(gè)文件new.txt
,然后查看主機(jī)下的/home
目錄,發(fā)現(xiàn)文件已經(jīng)同步。
反向操作
上面是從容器內(nèi)到容器外,現(xiàn)在反過來,從主機(jī)目錄下再增加一個(gè)文件second.txt
,然后再到容器內(nèi)查看,也是同步的。
停止容器
如果容器停止了,我在外面把文件都刪掉了,當(dāng)再次啟動容器后進(jìn)去查看,也是同步的。
重啟容器,進(jìn)入容器的/home下查看,也是空的。
相信現(xiàn)在應(yīng)該可以體會到容器卷的作用了,比如有些容器里涉及需要改配置的,那么掛載到主機(jī)目錄下之后,就不需要進(jìn)入容器修改了,直接在外面修改,容器內(nèi)自動同步,更多關(guān)于Docker容器數(shù)據(jù)卷的資料請關(guān)注其它相關(guān)文章!