Docker安装MySQL5.7
前言
最近打算开始写一些MyBatis的文章,使用MyBatis就必须有数据库环境,数据库我们就选择常用的MySQL数据库,传统的安装数据库需要我们自己下载安装包,上传安装包到linux服务器,安装,启动服务等,很麻烦,今天教大家一个简单的方法,就是使用Docker,只需几行命令,就可以完成从下载安装包到数据库启动,大大简化了我们的安装过程。两三年前我写过一篇Docker安装MySQL的文章,今天想按照步骤重新做一下,发现有许多不完善的地方,于是重新总结下,就有了今天的文章,也可以看我之前的文章,简单了解下Docker。
Docker
是一个容器技术,汇集了许多JavaWeb经常使用的服务器镜像,所谓的服务器镜像就是安装了数据库(MySQL,Oracle,PostgreSQL)或缓存服务器(Redis,MQ)或APP服务器(Tomcat,Nginx,OpenResty)等的小型服务器,我们只需简单的Docker命令,完成拉取镜像,服务管理(启动,重启,关闭)等,每一个镜像都是独立运行的服务器,独立的IP,独立的标识,简单的说,linux系统运行docker,docker运行MySQL,Nginx,Redis等,1对1对多的关系,一个linux服务器,一个docker,多个JavaWeb使用的服务器。
准备工作
1. linux安装docker
首先保证linux上已经安装好Docker,具体的步骤,可以参看我之前的文章
安装vm12+CentOS7+Docker以及常见问题解决
2. linux上创建文件夹映射Docker中MySQL的配置文件
使用下边的命令在linux上创建三个文件夹,映射出Docker中MySQL的log,data,conf文件夹中的内容,我们只需修改linux中这三个文件夹中的内容,就可以同步反映到Docker中MySQL的log,data,conf文件夹中的内容,简单的说,这三个文件夹就是Docke中MySQL的对应文件夹的快捷方式
mkdir -p /mydata/mysql/log
mkdir -p /mydata/mysql/data
mkdir -p /mydata/mysql/conf
具体安装步骤
1. 拉取镜像
这里我们安装MySQL5.7的版本,只需在命令的mysql后添加冒号+版本号
具体的版本号,可以到Docker的MySQL镜像库查看
docker pull mysql:5.7
2. 启动MySQL (为了拷贝配置文件)
启动MySQL实例,为了拷贝出MySQL中的配置文件到我们准备工作中创建的conf文件夹中,最后我们会重新启动MySQL实例,映射配置文件
docker run --name mysql -d -e MYSQL_ROOT_PASSWORD=root mysql:5.7
3. 拷贝配置文件
首先使用下边命令查看MySQL标识符
docker ps -a
[root@localhost conf]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cac5b454bfe2 mysql:5.7 "docker-entrypoint.s…" 3 hours ago Up 3 hours 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql
这里的cac5b454bfe2是容器的唯一标识符
使用下边的命令拷贝配置文件到准备工作中创建的conf中
docker cp cac:/etc/mysql/conf.d /mydata/mysql/conf/
docker cp cac:/etc/mysql/mysql.conf.d /mydata/mysql/conf/
标识符前三位和其他Docker实例不重复,就可以使用标识符的前三位
4. 停止并删除MySQL服务器(为了启动带有映射关系的实例)
使用下边的命令停止并删除启动的MySQL服务器
docker stop mysql
docker rm mysql
5. 重新启动MySql
使用下边的命令,带有准备工作中创建的三个文件夹映射配置的参数,重新启动MySQL
docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
总结
到这里,就可以使用数据库客户端,连接到MySQL了,大家可以动手试试,欢迎留言交流,下篇见。