如果不小心执行了docker rm 容器A,通过查找到docker volumes中删除容器的数据,将其挂载到新启动的容器中,即可恢复应用+状态+数据。
背景
docker作为优秀的开源容器引擎,能够像集装箱一样以一种非常标准化、轻量、可移植的方式帮助我们进行开发、交付和运行应用程序。

当镜像运行起来成为容器时会需要相关的存储资源来支撑软件服务的运行,如存储的日志文件,用户传入的数据,伴随运行生成的文件等。

由于docker运行程序实在是太便利了,在有些时候,一些用于调试的docker项目(自研、开源),不知不觉就投入了使用,并没有对数据做很合理安全的配置(挂载,备份),此后如果一不小心删除了运行中的容器,再启动镜像时,就会发现这是一个全新的服务,之前程序运行过程中积累的状态数据、用户数据、日志数据不复存在。

最近就遇到了这个问题:之前调研了一个开源的OA系统,在测试阶段,很好用,对接了内部的认证系统后,很多同事纷纷上去试用,不知不觉积累了很多数据。
直到有一天,运维同事在这个开发环境为了升级相关服务,便执行了如下容器删除语句:
docker rm {这个OA容器}
当天晚上,很多行政同事就炸锅了,反馈以为是正式环境,自己这一周的相关报表、报告都在上面。
怎么办?

本文详细介绍了如何恢复意外删除的docker容器,包括理解docker的Volume机制,如何找到删除容器的volumes,以及如何基于相同镜像启动新容器并迁移挂载volumes,从而恢复应用、状态和数据。
最低0.47元/天 解锁文章
2675

被折叠的 条评论
为什么被折叠?



