Docker  实现MySql 容器数据卷 配置挂载与数据挂载

时间:2024-03-20 11:29:35
                                                                                              Docker  实现MySql 容器数据卷  配置挂载与数据挂载
 
 
我们要实现这个功能时,首先要知道什么是容器数据卷,为什么要用容器数据卷
 
如果数据都在容器中,那么我们容器删除,数据就会丢失!那么怎么才能不让数据丢失呢。
MySQL数据可以存储在本地! 容器之间可以有一个数据共享的技术!Docker容器中产生的数据,同步到本地! 这就是卷技术!
目录的挂载,将我们容器内的目录,挂载到Linux上面!
总结一句话:容器的持久化和同步操作!容器间也是可以数据共享的! 
 
 
 
注意!!!:实现配置挂载时,本地配置目录如果是空目录,那么挂载的时候,mysql容器内的配置目录也会为空(因为挂载了,会同步,同步会将容器内的配置目录也为空),这个时候,容器就无法成功运行。
解决这个问题,我们只要保证本地配置目录不为空就行了。解决思路有2个 (我用的是第一个)
1:启动一个容器,将容器内的配置文件 /etc/mysql/my.cnf,copy到我们本地。利用 docker cp命令完成;
2.:手动,自己本地新建一个my.cnf配置文件,手动将容器内配置文件 /etc/mysql/my.cnf内容 复制到本地的配置文件中;
 
以下是具体步骤
 
1.本地创建文件夹,用于挂载
 Docker  实现MySql 容器数据卷 配置挂载与数据挂载
第一个命令:创建mysql配置目录
第二个命令:创建mysql数据存储目录
 
mkdir -p:递归创建目录
 
 
2. 启动一个容器,将容器内的配置文件 /etc/mysql/my.cnf,copy到我们本地。利用 docker cp命令完成
 
   启动一个容器 
 Docker  实现MySql 容器数据卷 配置挂载与数据挂载
 
查看状态 启动成功
 Docker  实现MySql 容器数据卷 配置挂载与数据挂载
 
 将容器内的配置文件 my.cnf copy到我们本地配置目录下
 Docker  实现MySql 容器数据卷 配置挂载与数据挂载
 
然后我们要将这个容器 停止并删除
 
 

 Docker  实现MySql 容器数据卷 配置挂载与数据挂载

 

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
 
 Docker  实现MySql 容器数据卷 配置挂载与数据挂载
 
4.校验数据卷是否有效
 
我们连接mysql,并且新建一个数据库
 
连接成功
 Docker  实现MySql 容器数据卷 配置挂载与数据挂载
新建一个数据库
 
 Docker  实现MySql 容器数据卷 配置挂载与数据挂载
 
 
 
我们再去停止,删除之前的容器
 
 Docker  实现MySql 容器数据卷 配置挂载与数据挂载
 
然后我们再用之前的命令,启动一个容器
 Docker  实现MySql 容器数据卷 配置挂载与数据挂载
连接mysql数据库,查看我们新建的数据库 test 是否还存在
成功,数据还存在
 Docker  实现MySql 容器数据卷 配置挂载与数据挂载
 
通过查看 本地 mysql数据存放文件  也可以看到有哪些数据;我们test是存在的。
 Docker  实现MySql 容器数据卷 配置挂载与数据挂载
 
这样我们就可以使用 容器数据卷,将mysql的配置与数据挂载到我们本地,不管容器再怎么删除,也不会影响到数据了。