项目场景:
服务器空间满,想清理一下。发现是docker太大,/var/lib/docker/overlay2占用很大49G, 站也访问不了,mongodb前一天也停了。用这个清理docker system prune -a,结果把数据库的镜像及容器全删了。mysql等正常的容器及镜像都没影响,那些停了的没用的全删了。
千万慎用这个来清理 docker system prune -a,一定要先备份。
问题描述:
清理docker空间 docker system prune -a
清了7G左右,还误把mongodb等容器及镜像删除,数据也没备份。怎么找回并恢复数据span>
还有好几个nodejs容器及镜像被删,这个好办有备份。
原因分析:
没想到空间满,会导致很多容器停止服务。
没想到清理时,会删一些有用的东西。
涉及删除,都有谨慎。一定要先备份,能恢复。
千万慎用这个来清理 docker system prune -a,一定要先备份。
恢复解决方案:
docker mongodb的数据和配置在宿主机上默认有挂载,所以数据没丢。找到并复制数据到新容器里重启就行。具体如下:
- 新建一个mongodb镜像及容器
可以看到挂到宿主机上的两个目录
配置目录/data/configdb是空的
数据目录/data/db 数据存在这里, 对应挂到宿主机目录为
/var/lib/docker/volumes/4d77ddb447a42bf1242fb3acb7686a6e1f50f44a5c420d1a3a3370f0e0fc7c69/_data
进入目录,看到目录数据结构。因为是默认是匿名挂载,路径是一串字符,容器及镜像被删不好知道哪一个是要找的mongodb数据,找出特征,然后目录搜,搜到导入数据来试。
我觉得应该都带有mongod.lock这个文件
搜到了4个
进入 mongodb客户端,已经恢复成功。
把所有与mongdb相关的应用重启,看到有数据插入,界面能显示,系统恢复OK。
千万慎用这个来清理 docker system prune -a,一定要先备份。
全部指令
docker服务器空间满解决方案:/strong>
57G / 根目录
36G /var/lib/docker/overlay2
8.8G /var/lib/docker/containers 容器
2.2G /var/lib/docker/volumes 使用卷 数据持久化挂载
看上去是/var/lib/docker/overlay2占用很大,你还没法直接删减这里的文件。这就要知道这个文件夹是干什么用的p>
文章知识点与官方知识档案匹配,可进一步学习相关知识云原生入门技能树容器(docker)安装docker8829 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!