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运行redis并操作(Docker安装MySQL和Redis的方法步骤)
- docker镜像如何打包(Docker打包镜像及修改配置的实现)
- docker网络有哪些模式(Docker网络原理及自定义网络详细解析)
- docker中如何使用nginx(docker nginx实现一个主机部署多个站点操作)
- docker 各种用法(详解Docker commit的使用)
- dockernextcloud优化(docker+nextcloud搭建个人云存储系统的实现)
- springboot怎么用docker(使用docker部署spring boot并接入skywalking的方法)
- docker端口映射和暴露端口的区别(解决docker指定udp端口号的问题)
- docker实战部署(使用docker搭建一套开发环境全家桶的详细教程)
- docker创建mysql环境(docker上部署MySQL的示例)
- dockerfile挂载目录(解决docker run中使用 ./ 相对路径挂载文件或目录失败的问题)
- docker部署mysql并且自动启动(Docker 部署 Mysql8.0的方法示例)
- docker镜像怎么用(Docker和镜像的操作方法)
- 数据库安装到docker(基于docker安装mariadb配置过程解析)
- docker desktop怎么安装共识容器(安装Docker Desktop报错WSL 2 installation is incomplete的问题解决报错)
- 怎么用docker搭建测试环境(基于docker 搭建Prometheus+Grafana的过程详解)
- 大事件 合肥四中火了(大事件合肥四中火了)
- 翼龙贷组织出借人调研 感受鄱阳 借 来的致富路(翼龙贷组织出借人调研)
- 2023新国风戏曲教育寒假集训班汇报演出《戏娃闹元宵》图文报道(2023新国风戏曲教育寒假集训班汇报演出戏娃闹元宵图文报道)
- 九儿《狐踪谍影》出演热血女特警,戏份杀青受关注(九儿狐踪谍影出演热血女特警)
- 红色代表什么(红色代表什么寓意)
- 蓝天代表什么(蓝天代表什么生肖)
热门推荐
- 如何判别云服务器的优劣(选用云服务器的这四大风险必须知道)
- str怎么把最后一个字符去掉(因str_replace导致的注入问题总结)
- 云主机状态错误(云主机解析IP无法访问网站原因)
- Visual Studio 编译中活动平台AnyCPU
- sqlserver查看数据表更新时间(SQL Server实现显示每个类别最新更新数据的方法)
- phpob函数使用方法(php中isset与empty函数的困惑与用法分析)
- python对字典值排序(Python实现字典按key或者value进行排序操作示例sorted)
- MVC中使用jQuery加载分部视图(PartialView)
- centos7怎样安装vnc(Ubuntu 20.04系统中安装vncserver的方法步骤)
- 如何搭建pxe服务器(使用vmware测试PXE批量安装服务器的详细过程)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9