关于Docker in MySQL中的数据持久化
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了关于Docker in MySQL中的数据持久化,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1910字,纯文字阅读大概需要3分钟。
内容图文
1拉取镜像
docker pull mysql
2运行容器(同时设置密码和让数据库名生效)
docker run --name mysqldock -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_DATABASE=inst1 -d -p 3306:3306 mysql
3进入容器
docker exec -it mysqldock bash
4进入mysql:
mysql -uroot -p
5查看数据表(发现inst1已经在容器初始化时创建)
show databases;
6使用Navicat连上mysql后崽创建一个库inst2并在xshell终端执行show databases;查看库是否创建成功
7将容器保存为新镜像
docker commit mysqldock
8删除所有容器
docker rm -f $(docker ps -aq)
9使用新镜像运行容器并进入容器,然后登陆数据库后执行查表操作(此时发现里面只有一张表inst1),然后使用Navicat查看inst1表的内容是空的
docker run --name mysqldock2 -e MYSQL_ROOT_PASSWORD=123456 -d -p 3360:3360 7796d57a6427 docker exec -it mysqldock2 bash mysql -uroot -p show databases;
以上说明一个问题:数据挂载在容器的数据卷中,使用commit命令生成新的镜像后,数据并不能保留在数据内,
10执行exit退出数据库登陆后,查看mysql默认的挂载路径:docker inspect mysqldock2
"Mounts": [ { "Type": "volume", "Name": "92c09f84682667cc743a3a0d0cdd48354ebd63e20bd6f0e2a267910c23eba33b", "Source": "/var/lib/docker/volumes/92c09f84682667cc743a3a0d0cdd48354ebd63e20bd6f0e2a267910c23eba33b/_data", "Destination": "/var/lib/mysql", "Driver": "local", "Mode": "", "RW": true, "Propagation": "" }
结论:
在宿主机创建一个专门存放数据文件夹路径,新建容器的时候映射该路径到容器,俗称数据挂载,这样可以很好解决数据丢失的问题
那对于上面的情况,既已经有一个容器使用了volume(docker默认挂载),想把volume里的数据在新的容器中使用怎么办呢?
我们可以先把mysqldock容器中所需要的文件拷贝出来到本地的/var/own/mysqldata
docker cp mysqldock:/var/lib/mysql /var/own/mysqldata
然后在创建新的mysql容器时,挂载该文件即可
docker run -v /var/own/mysqldata:/var/lib/mysql --name mysqlnew -d mysql
这样新的容器就可以保留mysqldock中的数据了
11除了创建容器时指定挂载目录这个方法外,还有一种方法就是使用--volumes-from参数指定其它容器的volume
docker run --name mysql3 --volumes-from mysqldock -d mysql
内容总结
以上是互联网集市为您收集整理的关于Docker in MySQL中的数据持久化全部内容,希望文章能够帮你解决关于Docker in MySQL中的数据持久化所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。