docker 重启容器后数据丢失(如何恢复docker容器数据)
docker 重启容器后数据丢失
如何恢复docker容器数据项目测试环境数据库数据丢失,特此记录一下。当时是用 docker 安装的,以为临时使用一段时间,也没有持久化。突然前天 docker 日志满了,同事想着去清理日志,使用了如下命令:
docker system prune
结果当时 MySQL 容器当时正常处于停止状态,结果容器一下子就被干掉了,我们备份的数据还是三月份的,这下糟糕了。然后各种研究开始恢复。
然后我就去官方文档去研究这个命令是干什么的,上面用到的 docker system prune
意思是:
Remove all unused containers, networks, images (both dangling and unreferenced), and optionally, volumes.
删除所有未使用的容器、网络、图像(悬空和未引用的图像)以及卷(可选)。
By default, volumes are not removed to prevent important data from being deleted if there is currently no container using the volume. Use the
--volumes
flag when running the command to prune volumes as well:默认情况下,如果当前没有使用卷的容器,则不会删除卷以防止删除重要数据。运行命令时也可以使用
--volumes
标志来修剪卷:
这下心放下了一半,还好数据卷没有被删除,我们可以利用数据卷可以进行恢复数据。接下来记录下我的恢复方案吧。
1.查找数据卷位置数据卷目录在 /var/lib/docker/volumes
下,每个容器都会在该目录下有一个文件夹,如果容器还存在的话,我们可以使用 docker inspect 容器ID
去查看 数据卷位置,这下容器被删除了,可怎么办,只能挨个去找了,一般 MySQL 容器数据卷目录下会有一个 _data
目录,该目录下会显示你每个数据库的文件夹,最终找到了。
这个 cxhello
就是我们的测试库,现在我们就可以恢复数据了。
使用 docker volume create 数据卷名字
命令新建一个数据卷,docker volume ls
查看数据卷列表
注意:使用数据卷进行挂载的时候,数据卷必须是一个空的目录,也就是说不能有任何数据。
然后创建容器
docker run -d -p 3309:3306 -v mysqldata:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name huifu mysql:5.7
在恢复数据之前需要把刚刚建立的数据卷里面关联的内容删除掉,然后把之前的数据卷内容复制到现在的数据卷进行数据恢复。
cd /var/lib/docker/volumes/mysqldata/_data/ rm -f * rm -f -R *
复制内容到数据卷
cd /var/lib/docker/volumes/1db16a9dfdf3442b117ebc2ec11df5df4db717cfd567c77fa0a49905a9652fa0/_data/ cp -R * /var/lib/docker/volumes/mysqldata/_data/
至此数据库数据恢复完成,进入恢复的容器查看
参考文章https://docs.docker.com/engine/reference/commandline/system_prune/
https://www.cnblogs.com/cheyunhua/p/13433400.html
到此这篇关于如何恢复docker容器数据 的文章就介绍到这了,更多相关docker容器数据恢复内容请搜索开心学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持开心学习网!
- docker 部署netcore(关于Jenkins + Docker + ASP.NET Core自动化部署的问题避免踩坑)
- dockerpush被拒绝(docker pull拉取超时的解决方案)
- docker容器端口和内部进程(Docker动态给容器Container暴露端口操作)
- docker 各种用法(详解Docker commit的使用)
- docker推荐单个容器运行(docker容器状态的转换实现)
- docker容器的标准使用过程(Docker容器的使用方法简单示例)
- web开发如何正确使用docker(Docker部署web项目的实现)
- docker如何加volume(Dockerfile 中 VOLUME 与 docker -v 的区别说明)
- 怎么用docker中的mysql连接数据库(连接docker里面的mysql失败解决方法)
- docker怎么做数据(Docker数据卷常用操作代码实例)
- docker启动失败容器目录结构(docker容器中安装vim问题解决)
- springboot怎么用docker(使用docker部署spring boot并接入skywalking的方法)
- docker容器临时网络连接(Docker与iptables及实现bridge方式网络隔离与通信操作)
- dockercp用法详解(Docker开启TLS和CA认证的方法步骤)
- docker部署高性能服务器(Docker部署SQL Server 2019 Always On集群的实现)
- 使用TLS加密通讯远程连接Docker的示例详解(使用TLS加密通讯远程连接Docker的示例详解)
- 爱情可以当饭吃吗(爱情能当饭吃吗)
- Top 3 JSHS《运动与健康科学 英文 》跻身SCI体育学期刊世界前三(Top3JSHS运动与健康科学)
- 体坛传媒LOGO全新升级,多元发展迈出坚实步伐(体坛传媒LOGO全新升级)
- 超撩人治愈的绝美水彩,原来出自她之手 一笔一画令无数人沉醉(超撩人治愈的绝美水彩)
- 新手的勾线(新手的勾线)
- ()
热门推荐
- 阿里云ECS实例中部署的Web网站运行速度慢的解决方法(阿里云ECS实例中部署的Web网站运行速度慢的解决方法)
- mysql left join索引怎么使用(详解mysql 使用left join添加where条件的问题分析)
- 宝塔面板使用外部数据库(宝塔面板负载状态load average中的数据代表了什么?)
- HttpWebResponse.StatusCode请求状态代码
- pandas字符串和数字(使用pandas把某一列的字符值转换为数字的实例)
- java连接mongodb(Docker连接mongodb实现过程及代码案例)
- docker网络通信(Google和Facebook不使用Docker的原理解析)
- sqlserver2019使用教程图文(SQLServer2019 数据库环境搭建与使用的实现)
- dedecms搜索设置(织梦dedecms默认作者和默认来源修改方法)
- docker清理占用空间(docker清理大杀器/docker的overlay文件占用磁盘太大的解决)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9