centos 环境 docker上安装mysql 及其数据挂载到宿主机

最近做DBA,入职第二周老大就说让我在一台测试服务器上安装配置MySQL,惊恐之前工作一年半也就是用用sql select、update一下数据,其他基本没用过,然后一脸懵逼。不过老板交代的事总要做,然后这几天就开始学习Linux,了解docker和mysql安装。

经过各种查询,发现网上没有对新手的docker安装mysql一个完整的文档,大神们都是哪里报错说哪里,对于新手哪里看得懂啊,这次完成了mysql安装后觉得闲的没事,就写一下这次安装经过和大家一起分享下害羞

这次安装MySQL ,环境是centos 7.0,  系统和docker是另外的运维同事部署安装好的,所以我就不分享这部分安装(其实是不知道害羞

下边开始进入正题啦大笑,首先在docker上部署MySQL前,我们要下载MySQL 镜像:

命令: docker pull MySQL(这个命令不会限制版本,会按照docker上mysql最新版本进行下载,如果要限定mysql版本,命令是:docker pull MySQL:5.7 这里我们下载的是MySQL 5.7版本)这里作为小白我出过一次错,拉取了MySQL 8.0安装,然后navicat远程各种连不上,大神们都说8.0密码验证方式不同要修改,经各种修改都没连上,后来直接放弃了卸载后重装了5.7版安静

 pull在官网上下载其实很慢的,我这里用的是在网易163上下载的5.7 再改了名,163下载命令如下:

docker pullhub.c.163.com/library/mysql:5.7

镜像下载下来是带了很长一串名字,我们查看下载下来的镜像可用命令:

docker images

发现是不是名字很长?微笑我们修改下镜像名:

docker taghub.c.163.com/library/mysql:5.7 mysql:5.7  翻译过来就是我把  巴拉巴拉一串名字改成了 MySQL5.7

你问我为啥我们要改名?因为后续用镜像的时候要打名字啊,难道你准备手打 巴拉巴拉一串?鄙视

163下载速度很快,分分钟搞定后,我们就可以准备启动镜像安装MySQL啦害羞

启动docker命令:

docker run--name db001 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=mytest -d mysql:5.7

翻译过来就是 创建并运行 docker 命名本次创建容器名称为 db001  把容器中的3306端口映射到主机3306端口 

设置MySQL root账户密码为mytest  启动的镜像是名称为MySQL:5.7 的镜像(这里就是重命名的好处)害羞

跑一会服务起来了后;我们就可以查看docker 镜像运行情况了:

docker ps

这就是我们新建的MySQL ,理论这里就结束了,实际上有个大坑,会导致我们需要删掉这个MySQL重新安装过。抓狂

这里我们安装完MySQL后MySQL的服务和存储挂载全都是在容器中的,那么万一容器down了一次,内容就会消失掉,所以,我们不能把数据库的内容放到docker上,我们只能把程序放在docker中跑,数据要放到宿主机。惊恐经过各种查询,我还没有找到在docker中已经安装完后的情况下把存储路径挂载到宿主及,那么我就只能删掉这个服务重新安装设置了;大哭

 删除docker 中的MySQL服务前,我们要先停掉删:

停止命令:

 Dockerstop mysql5.7

删除容器:

docker rm fb087642b497(镜像ID)

接下来我们再重新安装一遍:

在安装之前我们已经知道要将MySQL服务挂载到宿主机上了,那么挂载到哪个位置能?不确定的情况下我们就自己新建个文件夹,然后把服务挂载到我们新建的文件夹中:

mkdir /data

mkdir /data/MySQL

mkdir /data/MySQL/datadir

新建了三个文件夹,层级关系,我们最后把存储路径放到mydata下,同样的我们在MySQL文件夹中新建个文件夹放配置文件:

mkdir /data/mysql/conf.d

奋斗

好我们已经在宿主机新建了两个文件夹来放数据,那么我们重新来安装一遍;

# docker run --name mysql5.7 -p 3306:3306 -v/data/mysql/datadir:/var/lib/mysql -v /data/mysql/conf.d:/etc/mysql/conf.d -eMYSQL_ROOT_PASSWORD=Mytest -d mysql:5.7

这句话就是完美安装,翻译过来就是 新建运行并取名为一个mysql5.7的docker服务 把端口映射到3306 MySQL存储路径放到新建的datadir文件夹中,把配置文件放到conf.d中(这里的/var.... 和/etc ....是docker服务默认位置,一重启就没了,所以我们要换掉),定义root账户密码为Mytest, 运行镜像是MySQL:5.7。

查看运行状态:

docker ps

进入docker:

docker exec-it e1066fe2db35 /bin/bash 翻译过来就是 进入这个docker服务 /bin/bash 的意思是进入之后状态是交互状态(可以打命令而不是仅查看)

是不是角色变了?得意

然后我们进入MySQL :

mysql -uroot -p -h localhost  敲回车后要求你输入root账户密码,你输入密码的时候是黑框,不显示的,不要以为你键盘坏了

密码输入正确后就进入MySQL啦,输入的是sql,不是Linux命令哦; 

退出MySQL:ctrl+d

退出docker:ctrl+d

本次教程就总结到这里,如果要重启docker服务:命令 docker restart name(这个是你docker ps后中显示的服务名,不是id哦);

以上内容都是我各种百度收集大神们的解决方法汇总了下,顺利的解决了老大安排我的任务哭,不会玩都是血与泪啊,希望大家看的时候不要嫌弃,小白一枚。有好的建议 和意见请多多指教在下。欢迎批评,若有哪里抄袭请及其提出。。。。反正也不是我自己原创,只是学到各位大大的解决方法逻辑的统计了下。哈哈哈,这条路还远,希望走的不要太痛苦。

猜你喜欢

转载自blog.csdn.net/qq_21108311/article/details/80980356
今日推荐