Docker完成MySQL的数据复用,并用主机的数据库连接工具访问Docker内的MySQL


内容目录

  • Docker完成MySQL的数据复用,并用主机的数据库连接工具访问Docker内的MySQL
  • 一、MySQL数据复用
  • 二、容器数据卷
  • 三、Docker中实现MySQL数据复用
  • 四、本机连接工具连接到Docker内的MySQL


一、MySQL数据复用

Docker内安装MySQL并解决中文乱码问题请看:快速到达

试想,当我们在Docker中运行了MySQL,但是当有一天,手欠的把容器删除了,注意不是stop,而是rm,那么MySQL中的数据就没有了,这肯定是我们不想看到的结果,所以有没有一种可能,即便容器被删除了,我们也能够保留住数据?

这里就可以使用到容器数据卷的知识了。

二、容器数据卷

什么是容器数据卷呢?

容器数据卷的设计,就是完成数据的持久化,完全独立于容器生命周期,因此Docker不会在容器删除时删除掉其挂载的数据卷。

数据卷类似于备份,即便容器删除,容器的数据也可以在数据卷中找到

容器卷的功能

数据卷可以在容器和主机之间完成数据共享和重用数据

卷的更改可以直接实时生效

容器卷语法

docker run -it --privileged=true -v /宿主机绝对路径:/容器内目录 镜像名

三、Docker中实现MySQL数据复用

我们可以使用容器数据卷将MySQL的数据与本机的目录连接起来,这样即便容器被删除,那么我们的本机还保存了数据

首先,在使用之前要先了解mysql的数据和一些需要保存下来的文件目录

  1. 日志:/var/log/mysql
  2. 数据:/var/lib/mysql
  3. 配置:/etc/mysql/conf.d

所以,使用数据卷连接起来,语法

docker run -d --privileged=true
  -v /lnnu/mysql/log:/var/log/mysql
  -v /lnnu/mysql/data:/var/lib/mysql
  -v /lnnu/mysql/conf:/etc/mysql/conf.d
  -e MYSQL_ROOT-PASSWORD=000000
  --name mysql\
mysql:5.7

这样使用数据卷关联到本地之后,即便容器被删除,那么数据也会保留在我们的本机上,就可以再次运行这个语句,完成数据的复用

四、本机连接工具连接到Docker内的MySQL

在Docker中完成了MySQL的安装之后,我们怎么才能做到再外部访问它呢?

其实这就是涉及到外部应该怎么访问它,往哪个端口发送请求呢?

这时候就用到了一个参数:-p,它可以完成Docker到本机的端口映射

使用语法:

-p 本机映射端口:Docker内端口
docker run -d --privileged=true
  -p 3306:3306
  -v /lnnu/mysql/log:/var/log/mysql
  -v /lnnu/mysql/data:/var/lib/mysql
  -v /lnnu/mysql/conf:/etc/mysql/conf.d
  -e MYSQL_ROOT-PASSWORD=000000
  --name mysql\
mysql:5.7

就是把Docker内的3306端口映射到本机的3306端口,这样当访问本机的3306端口的时候,就是在访问Docker容器内的3306端口

注意:使用了3306端口映射,就要保证本机并没有安装MySQL,不然会端口冲突,可以换做其他的端口

使用本机的连接工具连接

mysql docker 重动数据库 docker mysql 数据恢复_mysql

显示连接成功,连接上去,看一下数据是不是有的

mysql docker 重动数据库 docker mysql 数据恢复_数据_02

可以看到,数据和Docker中的一样,这样一来,在Docker中安装,比本机上自己安装来比,少了繁琐的配置,少了莫名其妙的错误,总之,Docker,强!