当前位置: 首页 > news >正文

Docker数据持久化:Volume完全指南,从入门到生产环境选型

你有没有遇到过这种情况:数据库跑在容器里,存了一堆数据,结果容器一删,数据全没了。

这是因为容器的文件系统是临时的。容器没了,里面的数据也就没了。

Docker Volume(数据卷)就是来解决这个问题的。

一、Volume是什么?

简单说,Volume就是把宿主机上的一个文件夹,挂载到容器里面。

容器往指定路径写数据,实际是写在宿主机上。容器删了,宿主机上的文件还在。下次重新跑容器,再把同一个文件夹挂载进去,数据就回来了。

一句话:Volume让容器的数据“活”下来。

二、三种Volume类型

Docker提供了三种Volume,都通过docker run -v参数指定。

1. 宿主机卷(Host Volumes)

你自己指定宿主机上的哪个文件夹挂到容器里。

docker run -v /home/data:/var/lib/mysql/data mysql

宿主机路径和容器路径,都由你说了算。灵活性高,但你需要自己管理宿主机上的文件夹。

2. 匿名卷(Anonymous Volumes)

你只告诉Docker“容器里哪个路径要挂载”,不指定宿主机路径。

docker run -v /var/lib/mysql/data mysql

Docker会在/var/lib/docker/volumes/下自动生成一个随机哈希名的文件夹,帮你完成挂载。

方便,但你也找不到这个文件夹在哪,也不好重复使用。

3. 命名卷(Named Volumes)

你给卷起个名字,Docker自动管理宿主机路径。

docker run -v my-data:/var/lib/mysql/data mysql

Docker会在/var/lib/docker/volumes/my-data/下创建对应的存储目录。

这是生产环境最推荐的方式。你只需要记住卷的名字,不用关心它存在宿主机哪里。

三、Docker Compose中使用命名卷

在实际项目中,我们通常用Docker Compose管理多容器。命名卷的配置也很简单:

version: '3' services: mongodb: image: mongo ports: - 27017:27017 volumes: - db-data:/var/lib/mysql/data volumes: db-data:

在服务下面用volumes声明要挂载的卷(卷名:容器内路径),然后在最下面统一声明所有用到的命名卷。

同一个命名卷可以挂载到多个容器,实现数据共享。比如两个服务都挂载同一个卷,一个写,一个读,非常方便。

四、三种Volume怎么选?

类型适用场景优缺点
宿主机卷开发测试、需要明确知道数据存在哪灵活,但需要手动管理路径
匿名卷临时数据、一次性任务方便,但无法重复引用
命名卷生产环境、数据库等有状态应用Docker自动管理,便于共享和复用

生产环境,优先用命名卷。

写在最后

Volume是Docker里非常基础但重要的概念。搞懂了它,你的数据库、配置文件、上传文件才能“活”下来。

记住三个关键词:

  • 宿主机卷:你指定路径

  • 匿名卷:Docker随机生成路径

  • 命名卷:你起名字,Docker管路径

生产环境,选命名卷。

http://www.jsqmd.com/news/625217/

相关文章:

  • 嵌入式语音交互实战:基于树莓派4B与SYN6288的智能语音播报系统设计
  • hidapi项目贡献指南:如何参与开源HID库的开发
  • GetQzonehistory:一键永久备份你的QQ空间历史说说,让青春记忆永不褪色
  • 基于大疆PSDK与Jetson Nano的无人机实时GPS数据采集与ROS集成实战
  • 告别yum默认Python2!在CentOS7上优雅共存Python3.13与系统Python,并配置pip和虚拟环境
  • LaTeX报错急救指南:如何快速定位并删除U+200B零宽空格(附实用排查技巧)
  • Hack Club硬件编程进阶:七段数码管与伺服电机控制技术
  • STM32步进电机4轴控制源码(相对/绝对/回原点/梯形加减速运动控制 F103 F405版本)
  • 终极指南:C2Rust位域处理模块的核心原理与实战应用
  • 论文插图神器ChemDraw实战:5分钟学会绘制专业级化学反应流程图
  • Maomi.In | .NET 全能多语言解决方案系
  • Cinny移动端适配:响应式设计与用户体验优化策略
  • Spring with AI (): 搜索扩展——向量数据库与RAG(下)餐
  • 2026届学术党必备的十大降重复率工具实际效果
  • TLA+测试框架完全解析:如何编写有效的模型验证用例
  • Vue + G 实战:打造高校学生打卡数据可视化大屏使
  • 清华教授:三个心理资本,决定你能走多远
  • 2026年4月优质的玻璃钢桥架公司口碑推荐,玻璃钢污水池盖板/SMC防火槽盒,玻璃钢桥架源头厂家口碑推荐 - 品牌推荐师
  • Linux解压大文件报错?手把手教你用7zip搞定4GB+压缩包(附详细安装指南)
  • MicroMDM社区生态:开源MDM的未来发展趋势
  • SteamTinkerLaunch命令行工具大全:Steam之外的强大功能探索
  • linux学习进展 主函数的参数
  • 扩散模型是什么: 擅长生成图像、视频、音频、3D点云等
  • 存储那么贵,何不白嫖飞书云文件空间雅
  • 终极PyTorch部署指南:从训练到生产环境的完整路径
  • .NET源码生成器基于partial范式开发和nuget打包橙
  • 多模态商品导购智能体落地手记:从图文视频协同到工程取舍,再谈 DМχΑРΙ
  • keil5软件安装步骤(附安装包)Keil uVision 5 MDK 超详细下载安装教程
  • 为什么选择vue-cropper?深度解析5大核心优势与使用场景
  • VanillaNet:极简架构的深度剖析与实战指南