Docker安装MySQL
实现持久化存储
在 Docker 中运行 MySQL 并实现数据持久化,需要挂载以下几个目录:
-
配置文件目录:
- 挂载路径:
/etc/mysql/conf.d
- 用途: 存放 MySQL 的配置文件,如
my.cnf
。这些配置文件会在 MySQL 启动时读取,用于设置数据库的各种参数。
- 挂载路径:
-
数据目录:
- 挂载路径:
/var/lib/mysql
- 用途: 存放 MySQL 的数据文件,包括数据库表、索引、日志等。这个目录保存了 MySQL 中实际的数据内容。
- 挂载路径:
-
日志目录:
- 挂载路径:
/var/log/mysql
- 用途: 存放 MySQL 的日志文件,包括错误日志、慢查询日志等。这些日志可用于问题排查和性能调优。
- 挂载路径:
-
创建对应目录
sudo mkdir -p /etc/mysql/conf.d /var/lib/mysql /var/log/mysql
通过挂载这些目录,您可以确保 MySQL 的配置文件、数据文件和日志文件都保存在宿主机的指定目录中,即使 Docker 容器被删除或重新创建,这些数据也不会丢失。
以下是一个示例 docker run
命令,展示了如何挂载这些目录:
sudo docker run -d --privileged=true \
--name mysql \
-e MYSQL_ROOT_PASSWORD=password \
-v /home/ubuntu/mysql/conf.d:/etc/mysql/conf.d \
-v /home/ubuntu/mysql/data:/var/lib/mysql \
-v /home/ubuntu/mysql/logs:/var/log/mysql \
-p 3306:3306 \
mysql:8.0.37
在这个示例中:
-
/home/ubuntu/mysql/config
目录将被挂载到容器的/etc/mysql
目录,用于存放配置文件。 -
/home/ubuntu/mysql/data
目录将被挂载到容器的/var/lib/mysql
目录,用于存放数据文件。 -
/home/ubuntu/mysql/logs
目录将被挂载到容器的/var/log/mysql
目录,用于存放日志文件。
通过这样的挂载方式,即使 Docker 容器被删除或重新创建,您在宿主机上的这些目录中保存的 MySQL 配置和数据也不会丢失。
PS:
- 如果运行失败,可以执行
sudo docker logs [mysql]
查看相关日志。[mysql]为容器名称
Docker中进入mysql
sudo docker exec -it [mysql-name] mysql -uroot -p
本机进入mysql
- 如果有需要可以安装mysql客户端mysql -uroot -p连接
sudo apt install mysql-client-core-8.0 # version 8.0.35-0ubuntu0.22.04.1, or
sudo apt install mariadb-client-core-10.6 # version 1:10.6.12-0ubuntu0.22.04.1