【一】引入
- 根据您提供的内容,我们可以看出在使用Docker运行MySQL容器时,如果没有进行目录映射,配置文件和表数据都将保存在容器内部。
- 当删除容器后,这些数据也会丢失。
- 为了确保数据的持久化并避免数据丢失的情况,您可以进行目录映射来将数据保存在宿主机上。
【二】操作步骤
【1】做目录映射:
- 在宿主机上创建用于存储MySQL数据、配置文件的目录。
mkdir /home/mysql
mkdir /home/mysql/conf.d
mkdir /home/mysql/data/
【2】配置文件my.cnf:
- 在创建的目录
/home/mysql
中创建配置文件my.cnf
,指定MySQL的配置参数。 - 以下是一个示例:
vim /home/mysql/my.cnf
[client]
default-character-set=utf8
[mysqld]
user=mysql
character-set-server=utf8
default_authentication_plugin=mysql_native_password
secure_file_priv=/var/lib/mysql
expire_logs_days=7
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
max_connections=1000
【3】运行MySQL容器,并进行目录映射:
- 使用
-v
参数指定目录映射,将宿主机上的目录映射到MySQL容器内部对应的路径。 - 以下是一个示例:
docker run -di -v /home/mysql/data/:/var/lib/mysql -v /home/mysql/conf.d:/etc/mysql/conf.d -v /home/mysql/my.cnf:/etc/mysql/my.cnf -p 3307:3306 --name mysql mysql:5.7 -e MYSQL_ROOT_PASSWORD=123456
【4】创建库、表和插入数据:
- 运行MySQL容器后,可以连接到MySQL并执行相应的SQL语句来创建数据库、表,并插入数据。
【5】停止和删除容器:
- 如果需要停止或删除MySQL容器,可以使用以下命令:
docker stop mysql
docker rm mysql
- 注意,这不会影响已经进行目录映射的数据,数据仍然保存在宿主机的对应目录中。
【6】重新运行容器:
- 当需要重新运行MySQL容器时,只需再次运行带有目录映射参数的
docker run
命令:
docker run -di -v /home/mysql/data/:/var/lib/mysql -v /home/mysql/conf.d:/etc/mysql/conf.d -v /home/mysql/my.cnf:/etc/mysql/my.cnf -p 3307:3306 --name mysql mysql:5.7 -e MYSQL_ROOT_PASSWORD=123456
- 此时,之前的数据将会重新加载到容器内部。