Docker 实现MySql 容器数据卷
配置挂载与数据挂载
我们要实现这个功能时,首先要知道什么是容器数据卷,为什么要用容器数据卷
如果数据都在容器中,那么我们容器删除,数据就会丢失!那么怎么才能不让数据丢失呢。
MySQL数据可以存储在本地! 容器之间可以有一个数据共享的技术!Docker容器中产生的数据,同步到本地! 这就是卷技术!
目录的挂载,将我们容器内的目录,挂载到Linux上面!
总结一句话:容器的持久化和同步操作!容器间也是可以数据共享的!
注意!!!:实现配置挂载时,本地配置目录如果是空目录,那么挂载的时候,mysql容器内的配置目录也会为空(因为挂载了,会同步,同步会将容器内的配置目录也为空),这个时候,容器就无法成功运行。
解决这个问题,我们只要保证本地配置目录不为空就行了。解决思路有2个 (我用的是第一个)
1:启动一个容器,将容器内的配置文件 /etc/mysql/my.cnf,copy到我们本地。利用 docker cp命令完成;
2.:手动,自己本地新建一个my.cnf配置文件,手动将容器内配置文件 /etc/mysql/my.cnf内容 复制到本地的配置文件中;
以下是具体步骤
1.本地创建文件夹,用于挂载
第一个命令:创建mysql配置目录
第二个命令:创建mysql数据存储目录
mkdir -p:递归创建目录
2.
启动一个容器,将容器内的配置文件 /etc/mysql/my.cnf,copy到我们本地。利用 docker cp命令完成
启动一个容器
查看状态 启动成功
将容器内的配置文件 my.cnf copy到我们本地配置目录下
然后我们要将这个容器 停止并删除
3.在本地有配置文件的情况下,运行以下命令
docker run -d -p 3306:3306 --name mysql02 -e MYSQL_ROOT_PASSWORD=123456 -v /docker/mysql/conf:/etc/mysql -v /docker/mysql/data/mysql:/var/lib/mysql mysql:5.7
4.校验数据卷是否有效
我们连接mysql,并且新建一个数据库
连接成功
新建一个数据库
我们再去停止,删除之前的容器
然后我们再用之前的命令,启动一个容器
连接mysql数据库,查看我们新建的数据库 test 是否还存在
成功,数据还存在
通过查看 本地 mysql数据存放文件 也可以看到有哪些数据;我们test是存在的。
这样我们就可以使用 容器数据卷,将mysql的配置与数据挂载到我们本地,不管容器再怎么删除,也不会影响到数据了。