一、背景
由于现在大部分的应用都是运行在云服务器上的,而现在大多数文章都是主要写如何在服务器上使用docker去运行mysql,比较少有介绍云服务器上的。再加上现在k8s比较火爆,而云厂商大多数都提供了k8s 集群服务且master免费,我们只需要使用就行了,更深一级的运维的事情就交给云厂商处理吧。但是建议开发的同学,还是要去手动部署一下k8s集群或只有单节点的也行,做一个基础的了解。这样用云会更加随心应手。
二、简要说明
本篇文章主要介绍如何在docker中安装mysql,并将路径挂载到服务器的目录中,在对其运行有一些 了解后。
再基于腾讯云的集群服务去创建mysql服务,并将实现上面的将路径挂载的功能。
三、具体步骤
1.首先创建相关的目录,用于映射,这里我创建了
/mysql/data 用于映射数据目录
/mysql/config 用于映射配置文件
2.我们先进行一次普通的docker安装
docker pull mysql:lastest
先以普通的方式运行一次mysql不进行映射路径操作,并设置root密码:
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest
进入跑起来的容器
docker exec -it 容器id /bin/bash
运行:mysql --verbose --help|grep -A 1 ‘Default options‘ 查看Mysql的配置路径:
从上图可以看出, 服务器首先会读取/etc/my.cnf文件,如果发现该文件不存在,再依次尝试从后面的几个路径进行读取。由于/etc/my.cnf是不存在的因此会读取中间的路径,
因此我这里打算把整个/etc/mysql的路劲都映射出去。
输入cat /etc/mysql/my.cnf 查看配置:如下图
我们可以看到datadir = /var/lib/mysql,因此需要把此路径映射到外面去。
3.由于我本机没有con.f之类的文件,所以我把容器中的文件拷贝出来。
docker cp 容器id:/etc/mysql /mysql/config
如上图所示:
4.关闭容器,并重新以映射路径的方式运行docker命令
docker stop 容器id
docker rm 容器id
docker run --name mysql -p 3306:3306 -v /mysql/data:/var/lib/mysql -v /mysql/config/mysql:/etc/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest
docker ps
如上图,docker中的mysql运行成功,并将配置与数据挂载到了服务器的硬盘中。
4.现在我们来试一下如何在腾讯云的集群中配置并挂载到服务器路径中。
首先创建好自己的集群,也可以把之前的服务器加入集群中,
Deployment----》新建,以下则相当于实现了上面的docker run的命令,后再以nodeport输出到服务器的端口实现访问