docker部署命令行 — 启动一个 MySQL 数据库服务 并且把它的数据存储挂载到卷(volume)里
摘要:这段 docker-compose.yml 配置启动MySQL数据库服务并使用卷存储数据。关键点:1) 使用Compose v3格式;2) 定义名为db的服务;3) 挂载mysql_data卷到容器内的/var/lib/mysql路径保存数据;4) 即使删除容器,卷中的数据仍保留。配置将MySQL数据存储在独立卷中,确保数据持久化,适合需要保留数据库数据的应用场景。通过卷挂载机制,实现了容器
挂载卷的配置写法:
version: "3"
services:
db:
image: mysql
volumes:
- mysql_data:/var/lib/mysql
volumes:
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 会用默认设置来建它。
🎯 总结这段配置做了什么:
- 启动一个 MySQL 容器。
- 容器里 MySQL 会把数据写到
/var/lib/mysql。 - 我们挂了一个卷
mysql_data到这个路径上,相当于让这些数据保存到了“硬盘”里。 - 即使你以后删除了容器,卷还在,数据库数据不会丢。
📘 详细举个例子说明:
假设你正在开发一个电商网站,需要一个数据库服务保存订单数据。
你写了这个 docker-compose.yml,运行:
sudo docker-compose up -d
这会发生什么:
-
Docker 自动下载 MySQL 镜像并运行它。
-
它会创建一个卷叫
mysql_data,就像一个隐藏的U盘。 -
MySQL 启动后,创建数据库文件、表结构、写入数据……
-
所有这些数据,其实都写到了卷
mysql_data里面(不在容器里)。 -
你以后就算运行:
sudo docker-compose down容器会删掉,但数据还保留在
mysql_data卷中。 -
你再运行:
sudo docker-compose up -d容器重新建一个,但卷还在!MySQL 会发现原来的数据库还在,继续使用。
🧠 更简单的比喻:
| 概念 | 类比 |
|---|---|
| 容器 | 临时开的数据库软件 |
| 卷 | 一个专门保存数据的U盘 |
| 挂载卷 | 把U盘插进容器,让它写入里面 |
down |
把软件关闭 |
up |
重新打开软件 |
| 数据还在 | 因为U盘没拔,数据没丢 |
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)