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

docker部署命令行 — 启动一个 MySQL 数据库服务 并且把它的数据存储挂载到卷(volume)里

挂载卷的配置写法:

version: "3"
services:db:image: mysqlvolumes:- mysql_data:/var/lib/mysqlvolumes:mysql_data:

这段 docker-compose.yml 配置非常典型,是用来启动一个 MySQL 数据库服务 并且把它的数据存储挂载到卷(volume)里。


✅ 整段配置的解释:

version: "3"

👉 告诉 Docker 使用 Compose 配置的第 3 版格式。这是配置文件的版本,跟你用的 Docker 版本有关(v3 是最常见的标准版)。


services:

👉 定义服务列表,可以理解为你要启动的一组“微服务程序”。


  db:

👉 定义了一个服务,名字叫 db,你可以随便起名,但这里代表“数据库服务”(Database)。


    image: mysql

👉 告诉 Docker 从网上拉一个镜像,名字是 mysql,这是官方提供的 MySQL 数据库镜像。

就像你告诉 Docker:“去下载一个 MySQL 程序来跑起来”。


    volumes:- mysql_data:/var/lib/mysql

👉 这是最关键的一行!意思是:

把一个叫 mysql_data(外接硬盘)挂载到这个容器内部的路径 /var/lib/mysql 上。

/var/lib/mysql 恰好是 MySQL 在容器中存储所有数据库文件的地方!


volumes:mysql_data:

👉 这一段是在底下声明:

我定义了一个叫 mysql_data 的卷,Docker 帮我自动创建它。

你不写配置内容没关系,Docker 会用默认设置来建它。


🎯 总结这段配置做了什么:

  1. 启动一个 MySQL 容器。
  2. 容器里 MySQL 会把数据写到 /var/lib/mysql
  3. 我们挂了一个卷 mysql_data 到这个路径上,相当于让这些数据保存到了“硬盘”里。
  4. 即使你以后删除了容器,卷还在,数据库数据不会丢。

📘 详细举个例子说明:

假设你正在开发一个电商网站,需要一个数据库服务保存订单数据。

你写了这个 docker-compose.yml,运行:

sudo docker-compose up -d

这会发生什么:

  1. Docker 自动下载 MySQL 镜像并运行它。

  2. 它会创建一个卷叫 mysql_data,就像一个隐藏的U盘。

  3. MySQL 启动后,创建数据库文件、表结构、写入数据……

  4. 所有这些数据,其实都写到了卷 mysql_data 里面(不在容器里)。

  5. 你以后就算运行:

    sudo docker-compose down
    

    容器会删掉,但数据还保留在 mysql_data 卷中。

  6. 你再运行:

    sudo docker-compose up -d
    

    容器重新建一个,但卷还在!MySQL 会发现原来的数据库还在,继续使用。


🧠 更简单的比喻:

概念类比
容器临时开的数据库软件
一个专门保存数据的U盘
挂载卷把U盘插进容器,让它写入里面
down把软件关闭
up重新打开软件
数据还在因为U盘没拔,数据没丢
http://www.lryc.cn/news/2397932.html

相关文章:

  • 铁电液晶破局 VR/AR:10000PPI 重构元宇宙显示体验
  • 2025年微信小程序开发:AR/VR与电商的最新案例
  • 从零开始,学会上传,更新,维护github仓库
  • #STM32 HAL库实现的STM32F407时钟配置程序以及和STM32F103配置对比
  • 竞争加剧,美团的战略升维:反内卷、科技与全球化
  • (17)课36:窗口函数的例题:例三登录时间与连续三天登录,例四球员的进球时刻连续进球。
  • 高性能分布式消息队列系统(二)
  • Spring 官方推荐构造函数注入
  • 华为OD机试真题——天然蓄水库(2025A卷:200分)Java/python/JavaScript/C++/C语言/GO六种最佳实现
  • 【Harmony OS】数据存储
  • MybatisPlus--核心功能--service接口
  • uniapp调试,设置默认展示的toolbar内容
  • 笔记本电脑开机无线网卡自动禁用问题
  • 推荐一款使用html开发桌面应用的工具——mixone
  • 支持TypeScript并打包为ESM/CommonJS/UMD三种格式的脚手架项目
  • 【云原生开发】如何通过client-go来操作K8S集群
  • 八.MySQL复合查询
  • cacti导出的1分钟监控数据csv文件读取并按5分钟求平均值,然后计算95计费值,假设31天的月份
  • FastMCP vs MCP:协议标准与实现框架的协同
  • AI视频“入驻”手机,多模态成智能终端的新战场
  • nginx+tomcat负载均衡群集
  • DEEPSEEK帮写的STM32消息流函数,直接可用.已经测试
  • day45 python预训练模型
  • 二维 根据矩阵变换计算缩放比例
  • Vue-Cropper:全面掌握图片裁剪组件
  • 建造者模式:优雅构建复杂对象
  • 现场总线结构在楼宇自控系统中的技术要求与实施要点分析
  • Axure组件即拖即用:垂直折叠菜单(动态展开/收回交互)
  • 学习路之PHP--easyswoole使用视图和模板
  • 《云原生安全攻防》-- K8s网络策略:通过NetworkPolicy实现微隔离