這一章我們主要是為大家介紹一下持計劃存儲與數(shù)據(jù)共享技術(shù)與內(nèi)容,之前我們講過Image與container的關(guān)系,其中Image是只讀的而container是可以寫數(shù)據(jù)的。
當(dāng)我們創(chuàng)建一個container我可以在這個container里面創(chuàng)建一些文件與數(shù)據(jù),但是呢,我們在container創(chuàng)建的數(shù)據(jù)僅限于這個container,什么意思呢?比如說我們把一個容器停掉或者刪除,那么這個數(shù)據(jù) 就都沒有了。
但是我們想創(chuàng)建一個數(shù)據(jù)庫的container,我們肯定要寫很多的數(shù)據(jù),如果我們那天不小心把容器刪除掉了,里面的數(shù)據(jù)也沒有這個是我們無法接受的。
所以container提供了一種持久化存儲的方式。
Docker持久化數(shù)據(jù)的方案
- 基于本地文件系統(tǒng)的Volume.
+ 受管理的data Volume, 由docker后臺自動創(chuàng)建
+ 綁定掛載的Volume, 具體掛載位置可以由用戶指定 - 基于plugin的volume比如NAS, aws
我們這里主要是講本地文件系統(tǒng)的Volume,這種方式就是在Docker create或者Docker run時, 通過-v參數(shù)將主機(jī)的目錄作為容器的數(shù)據(jù)卷。
好的小伙伴們,讓我們進(jìn)入數(shù)據(jù)的時代吧?。。?!
新增:
這里給大家講個問題,如果說你把數(shù)據(jù)掛載到本地的時候,如果你還想在重新啟動一個mysql或者給容器換個名字,這個時候你一定要把data里面的數(shù)據(jù)清空再次執(zhí)行,不然會出很多稀奇古怪的問題。比如說下面這條命令
docker run --name apple-mysql -v /Users/steven/fisher/data/apps/mysql/conf:/etc/mysql/conf.d -v /Users/steven/fisher/data/apps/mysql/data:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=111111 mysql:latest
- 做端口轉(zhuǎn)發(fā)的時候,要把本地的mysql服務(wù)停掉
- 如果你想新增一個更換container的名字 你一定要把/Users/steven/fisher/data/apps/mysql/data這個下面的數(shù)據(jù)清空,好的謝謝大家?。?!