使用Docker Volume或Bind Mount将MySQL数据挂载到宿主机,实现数据持久化。1. 推荐使用Docker Volume,如-v mysql-data:/var/lib/mysql,由Docker管理,数据独立于容器;2. Bind Mount可挂载宿主机目录,如-v /my/own/datadir:/var/lib/mysql,便于直接访问数据;3. docker-compose中可通过volumes配置实现自动化;4. 注意初始化权限、SELinux问题,并定期备份,避免数据丢失。Volume更安全省心,Bind Mount更灵活可控。

MySQL 在 Docker 环境中实现数据持久化,核心是将数据库文件存储在宿主机上,避免容器删除后数据丢失。最常用的方式是使用 Docker 的 数据卷(Volume) 或 绑定挂载(Bind Mount)。
Docker Volume 是管理持久化数据的最佳实践,由 Docker 管理,更安全、可移植。
创建一个 MySQL 容器并使用命名卷:
docker run -d \ --name mysql-container \ -e MYSQL_ROOT_PASSWORD=your_password \ -v mysql-data:/var/lib/mysql \ -p 3306:3306 \ mysql:8.0
其中 mysql-data 是一个命名卷,Docker 会自动创建并管理它。
查看卷位置:
docker volume inspect mysql-data
这样即使容器被删除,只要不手动删除该卷,数据依然保留。
将宿主机的某个目录挂载到容器内的数据目录,适合需要直接访问或备份数据的场景。
示例命令:
docker run -d \ --name mysql-container \ -e MYSQL_ROOT_PASSWORD=your_password \ -v /my/own/datadir:/var/lib/mysql \ -p 3306:3306 \ mysql:8.0
确保 /my/own/datadir 目录存在且有读写权限,MySQL 进程才能正常写入数据。
使用 docker-compose.yml 更便于管理:
version: '3.8'
services:
mysql:
image: mysql:8.0
container_name: mysql-container
environment:
MYSQL_ROOT_PASSWORD: your_password
ports:
- "3306:3306"
volumes:
- mysql-data:/var/lib/mysql
<p>volumes:
mysql-data:
运行:docker-compose up -d,数据会自动持久化到名为 mysql-data 的卷中。
/var/lib/mysql,否则数据只存在于容器层,重启或删除即丢失。:z 或 :Z 标签)。基本上就这些,用 Volume 最省心,用 Bind Mount 更灵活。根据实际需求选择即可。
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号