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的数据和一些需要保存下来的文件目录
- 日志:/var/log/mysql
- 数据:/var/lib/mysql
- 配置:/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,不然会端口冲突,可以换做其他的端口
使用本机的连接工具连接
显示连接成功,连接上去,看一下数据是不是有的
可以看到,数据和Docker中的一样,这样一来,在Docker中安装,比本机上自己安装来比,少了繁琐的配置,少了莫名其妙的错误,总之,Docker,强!