解决服务器空间满/var/lib/docker/overlay2占用很大,千万慎用 docker system prune -a清理 mongodb等数据库容器及镜像可能被删,找回恢复数据

项目场景:

服务器空间满,想清理一下。发现是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的数据和配置在宿主机上默认有挂载,所以数据没丢。找到并复制数据到新容器里重启就行。具体如下:

  1. 新建一个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进行处理,非常感谢!

上一篇 2021年4月25日
下一篇 2021年4月25日

相关推荐