
文章圖片

你是不是也經常在使用 Docker 的時候 , 遇到“數據持久化”相關的困惑?容器刪了 , 數據也跟著沒了?今天就帶你深入了解 Docker 的 Volume機制 , 搞懂什么是 Volume、怎么使用、存儲在哪 , 以及如何實現多個容器共享存儲!
一、什么是 Docker Volume?Docker 的 Volume(卷)是官方推薦的數據持久化方案 , 用來將容器中的數據獨立存儲在宿主機上 。 與容器生命周期解耦 , 刪除容器不會影響數據 , 非常適合用于數據庫、日志等場景 。
簡單理解就是:容器內的數據 -> Volume -> 宿主機目錄 。
二、?Volume 的使用場景
- 容器內服務需要持久化數據 , 比如 MySQL、Redis、PostgreSQL
- ?? 多個容器之間需要共享數據
- 防止重要數據在容器銷毀時丟失
- 容器頻繁更新、遷移 , 但數據需要保留
docker volume create mydata查看:docker volume ls2. 使用 Volume 運行容器docker run -d \\--name mysql \\-v mydata:/var/lib/mysql \\mysql:5.7這條命令把宿主機上的 mydata 卷掛載到了容器中的 /var/lib/mysql , MySQL 的數據就存儲在這個卷里 。3. 查看卷掛載路徑
docker volume inspect mydata輸出中 Mountpoint 字段會告訴你這個卷實際掛載到了宿主機的哪個路徑 , 例如:\"Mountpoint\": \"/var/lib/docker/volumes/mydata/_data\"也就是說 , 你的數據其實是存在宿主機這個目錄下的 。四、Docker Volume 存儲在哪?默認情況下 , Docker 會將 Volume 存儲在:
/var/lib/docker/volumes/卷名/_data/你也可以用第三方存儲驅動(如 NFS、GlusterFS、Ceph 等)把 Volume 存儲到遠程服務器或分布式存儲系統 。五、如何共享 Volume??方式1:多個容器掛載同一個 Volume
docker run -d --name container1 -v mydata:/app/data busybox sleep 3600docker run -d --name container2 -v mydata:/app/data busybox sleep 3600兩個容器就可以共享 /app/data 目錄下的內容了 。?方式2:使用--volumes-from繼承掛載
docker run -d --name container1 -v /data busyboxdocker run -d --name container2 --volumes-from container1 busybox適合某些場景下的依賴繼承 , 比如日志采集、配置共享等 。六、Volume 的清理刪除未使用的卷
docker volume prune刪除指定卷docker volume rm mydata?? 注意:如果卷還在使用中 , 刪除會失敗 。七、補充:Volume vs Bind Mount
| 特性 | Volume(推薦) | Bind Mount(綁定掛載) |
| 安全性 | 高 , Docker 自主管理 | 較低 , 容易暴露宿主機結構 |
| 跨平臺支持 | 好 | 差 |
| 備份和遷移 | 簡單 | 需要自行管理 |
| 場景 | 數據持久化、共享數據 | 本地開發、配置文件掛載 |
總結一下Docker Volume 是實現容器數據持久化和共享的關鍵工具 。 掌握 Volume , 可以讓你:
- 保證數據不隨容器銷毀而丟失
- 實現多個容器的數據共享
- 更安全、便捷地管理容器生命周期中的數據
推薦閱讀
- 海外市場增長20倍!阿里云將于馬來西亞和菲律賓新增數據中心
- 中國電信智算網絡突破:跨數據中心無損推理,為企業算力部署開新篇
- 谷歌被判22.5億元天價賠償背后:安卓數據暗箱操作的五年拉鋸戰
- AI產品經理必修課!評測數據集構建方法 & 實踐
- ToB產品的價值衡量:如何構建數據化的評估體系?(下)
- 如何解決LoRa主從模式下的數據沖突?
- AI數據中心要實現1.6T網絡需要進行哪些測試?
- 榮耀MagicPad 3打通iOS鴻蒙安卓,可數據高速互傳
- 數據存儲方式對比:哪種方式既實用又經濟?
- 618數據出爐,蘋果無人能敵,國小米第一
