docker-【容器数据存储位置分析】以Mysql容器为例

MySQL容器数据存储分析

MySQL容器数据存储分析

Docker中MySQL容器的数据默认存储在容器内部的/var/lib/mysql目录,该目录是MySQL官方镜像预设的数据存储位置。删除容器会导致数据丢失,而仅重启容器不会影响数据。

1.基础了解

docker上我们的mysql容器的数据,默认是存储在mysql容器内部的/var/lib/mysql目录下,但是这样当我们删除mysql容器后重新创建容器,数据就会丢失;

  • 如果只是重启容器(如 docker restart container_name),数据通常不会丢失,因为容器的文件系统仍然存在。
  • 只有在删除容器后再重新创建新容器时,数据才会真正丢失。

其中/var/lib/mysql 是 MySQL 容器内的真实目录( MySQL 官方镜像中预设的数据存储目录)

因此:我们会在宿主机上建立真实的目录(路径):例如:/path/on/host/mysql-data;【即使用宿主机路径绑定挂载容器目录来实现数据持久化】

然后把 /path/on/host/mysql-data 目录挂载到 MySQL 容器内部的 /var/lib/mysql 目录;此时mysql的数据就会存储在我们宿主机的真实目录/path/on/host/mysql-data下了,重启mysql容器,数据就不会丢失;

2.数据持久化方法

通过绑定挂载(Bind Mount)将宿主机目录挂载到容器内的/var/lib/mysql目录,实现数据持久化。例如:

bash 复制代码
docker run -v /path/on/host/mysql-data:/var/lib/mysql mysql

此方法确保数据存储在宿主机,容器删除后数据仍保留。

  • 命令结构
java 复制代码
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
bash 复制代码
docker run - Docker 命令
-v /path/on/host/mysql-data:/var/lib/mysql - 选项(挂载卷)
mysql - 镜像名称(告诉 Docker 使用哪个镜像来创建容器)
  • 命令含义
bash 复制代码
使用 mysql 镜像
将宿主机的 /path/on/host/mysql-data 目录挂载到容器的 /var/lib/mysql 目录
启动一个基于 mysql 镜像的新容器

3.其他持久化方式使用命名卷的方法

数据卷(Volume)

使用Docker管理的卷,避免直接暴露宿主机路径:

bash 复制代码
docker volume create mysql-data
docker run -v mysql-data:/var/lib/mysql mysql

其实就是使用mysql-data一个命名来替代实际的路径/path/on/host/mysql-data

4.图片示例


相关推荐
Irene19914 小时前
Win11 自动更新导致 Docker Desktop 无法正常启动,Oracle SQL Developer 启动时报错
docker·更新
Database_Cool_6 小时前
Hudi 湖仓一体架构:阿里云 AnalyticDB MySQL 原生集成最佳实践
数据库·mysql·阿里云
darkdragonking6 小时前
OpenEuler 22.03 ,以docker ce 安装 Milvus 及可视化工具
docker·容器·milvus
_qingche7 小时前
H2 数据库到 MySQL 数据迁移
java·数据库·spring boot·mysql·spring·重构·kotlin
AOwhisky7 小时前
MySQL 学习笔记(第一期):数据库基础与 MySQL 初探
运维·数据库·笔记·学习·mysql·云计算
我叫张土豆8 小时前
V100 显卡部署 Qwen3-ASR-1.7B 语音识别模型(vLLM + Docker 完整教程)
docker·语音识别·vllm
数据库小学妹8 小时前
MySQL ORDER BY 深度解析:Using temporary 与 Using filesort 的底层机制及索引优化实战
数据库·经验分享·mysql·性能优化·dba
可乐ea8 小时前
【知识获取与分享社区项目 | 项目日记第 21 天】索引构建与联想建议:Outbox 增量更新 + Completion Suggester
java·大数据·mysql·elasticsearch·搜索引擎
AI人工智能+电脑小能手8 小时前
【大白话说Java面试题 第93题】【Mysql篇】第23题:从查找速度来看,聚集索引和非聚集索引哪个更快?
java·开发语言·数据库·mysql·面试
极客先躯9 小时前
高级java每日一道面试题-2026年01月18日-实战篇[Docker]-如何清理仓库中的旧镜像?
java·运维·docker·容器