容器数据卷以及MySQL数据卷同步

 

1,什么是容器数据卷:

如果数据都在容器中,那么删除容器,数据就会丢失!我们的需求:数据可以持久化

比如mysql容器,如果把容器删了,相当于删库跑路!(希望mysql数据可以存储在本地)

我们希望容器之间可以有一个数据共享的技术!docker容器中产生的数据,同步在本地!

这就是卷技术!

本质:目录的挂载,将我们容器内的目录,挂载到Linux上面

 

 

 

总结:使用卷技术是为了容器的持久化和同步操作,并且容器间也可以数据共享的。

 

,2,使用数据卷

 

方式一:直接使用命令挂载 -v

docker run -it -v 主机目录:容器目录

(类似于端口映射:docker run -it -p 主机端口:容器端口)

 

启动之后使用docker inspect 容器id查看是否挂载成功:

 

 

 

 

测试文件的同步:

 

 

 

 

再来测试:

(1),停止容器

(2),宿主机上修改文件

(3),启动容器

(4),容器内的数据依然是同步的

 

 

 

使用数据卷的好处:

我们以后修改只需要在本地修改即可,容器内会自动同步

 

 

 

3,实战:mysql同步数据

 

思考:mysql的数据持久化的问题

 

(1)获取镜像

[root@CentOs home]# docker pull mysql:5.7
5.7: Pulling from library/mysql
Digest: sha256:c8f68301981a7224cc9c063fc7a97b6ef13cfc4142b4871d1a35c95777ce96f4
Status: Image is up to date for mysql:5.7
docker.io/library/mysql:5.7
[root@CentOs home]#

(2)运行容器,需要做数据挂载

(注意:安装启动mysql时,需要配置密码的)

 

官方启动测试:

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

 

我们自己启动:

-d:后台运行

-p:端口映射

-v:卷挂载

-e:环境配置

--name:容器名字

(conf是MySQL的配置文件,data是MySQL的数据)

 

[root@CentOs home]# docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql  -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
fe98ba1e21c34c0b07e73c3096704945e56ea5d6d2a0a568f96eececa9eebb2a
[root@CentOs home]#

(3)启动成功后。我们在本机使用sqlyog来测试连接一下

(sqlyog连接到虚拟机Linux的3310端口-------3310和容器内的3306映射,这个时候就可以连接上了)

 

 

 

 

(4)在本地测试创建一个数据库,查看一下我们映射的路径是否ok

 

 

 

 

 

 

 

我们将容器删除后发现,挂载到本地的数据卷仍然没有丢失,这就实现了容器数据持久化!

 

 

posted @ 2022-03-19 20:24  屯子里唯一的架构师  阅读(228)  评论(0编辑  收藏  举报