你是不是也經(jīng)常在使用Docker的時候,遇到“數(shù)據(jù)持久化”相關(guān)的困惑?容器刪了,數(shù)據(jù)也跟著沒了?今天就帶你深入了解Docker的Volume機制,搞懂什么是Volume、怎么使用、存儲在哪,以及如何實現(xiàn)多個容器共享存儲!
一、什么是DockerVolume?
Docker的Volume(卷)是官方推薦的數(shù)據(jù)持久化方案,用來將容器中的數(shù)據(jù)獨立存儲在宿主機上。與容器生命周期解耦,刪除容器不會影響數(shù)據(jù),非常適合用于數(shù)據(jù)庫、日志等場景。
簡單理解就是:容器內(nèi)的數(shù)據(jù)->Volume->宿主機目錄。
二、Volume的使用場景
容器內(nèi)服務(wù)需要持久化數(shù)據(jù),比如MySQL、Redis、PostgreSQL
??多個容器之間需要共享數(shù)據(jù)
防止重要數(shù)據(jù)在容器銷毀時丟失
容器頻繁更新、遷移,但數(shù)據(jù)需要保留
三、Volume怎么使用?
1.創(chuàng)建Volume
dockervolumecreatemydata
查看:
dockervolumels
2.使用Volume運行容器
dockerrun-d\--namemysql\-vmydata:/var/lib/mysql\mysql:5.7
這條命令把宿主機上的mydata卷掛載到了容器中的/var/lib/mysql,MySQL的數(shù)據(jù)就存儲在這個卷里。
3.查看卷掛載路徑
dockervolumeinspectmydata
輸出中Mountpoint字段會告訴你這個卷實際掛載到了宿主機的哪個路徑,例如:
"Mountpoint":"/var/lib/docker/volumes/mydata/_data"
也就是說,你的數(shù)據(jù)其實是存在宿主機這個目錄下的。
四、DockerVolume存儲在哪?
默認(rèn)情況下,Docker會將Volume存儲在:
/var/lib/docker/volumes/卷名/_data/
你也可以用第三方存儲驅(qū)動(如NFS、GlusterFS、Ceph等)把Volume存儲到遠(yuǎn)程服務(wù)器或分布式存儲系統(tǒng)。
五、如何共享Volume?
方式1:多個容器掛載同一個Volume
dockerrun-d--namecontainer1-vmydata:/app/databusyboxsleep3600dockerrun-d--namecontainer2-vmydata:/app/databusyboxsleep3600
兩個容器就可以共享/app/data目錄下的內(nèi)容了。
方式2:使用--volumes-from繼承掛載
dockerrun-d--namecontainer1-v/databusyboxdockerrun-d--namecontainer2--volumes-fromcontainer1busybox
適合某些場景下的依賴?yán)^承,比如日志采集、配置共享等。
六、Volume的清理
刪除未使用的卷
dockervolumeprune
刪除指定卷
dockervolumermmydata
??注意:如果卷還在使用中,刪除會失敗。
七、補充:VolumevsBindMount
總結(jié)一下
DockerVolume是實現(xiàn)容器數(shù)據(jù)持久化和共享的關(guān)鍵工具。掌握Volume,可以讓你:
保證數(shù)據(jù)不隨容器銷毀而丟失
實現(xiàn)多個容器的數(shù)據(jù)共享
更安全、便捷地管理容器生命周期中的數(shù)據(jù)
別再讓數(shù)據(jù)隨風(fēng)而去了,趕緊用Volume把數(shù)據(jù)穩(wěn)穩(wěn)托住吧!
生鮮攤位陳列大全,總有幾款適合您!
吉小果水果店多年實戰(zhàn)經(jīng)驗:透露水果陳列的小竅門
水果店效果圖的空間魔法:陳列布局提升90%轉(zhuǎn)化率
免責(zé)聲明:本文內(nèi)容由開放的智能模型自動生成,僅供參考。