离奇的docker容器丢失问题排查

缘起

最近树莓派突然失联了,按照之前树莓派写挂sd卡导致系统卡死的经验,以为是sd卡挂了(其实最后发现不是sd卡问题,是网线松动o(* ̄︶ ̄*)o),就尝试恢复备份的镜像文件。

然而使用etcher工具把备份镜像刷到sd卡上后,运行起来发现一个docker容器丢失了。

因此有了这次的折腾过程。

折腾过程

使用etcher恢复镜像

在macos上使用etcher恢复了之前使用dd备份的sd卡镜像,然后启动后发现容器丢失。

经过分析以及比对其他容器,发现是容器的配置文件乱码了。

/var/lib/docker/containers/xxxxxx/config.v2.json使用一个老的配置,从另一个容易复制hostconfig.json文件过来,就可以启动了。

分析损坏原因

但是从现象分析,这里边可能有其他问题,因此重新把备份进行刷新后分析。

从nas服务器拉取备份,在其他ubunut系统挂载,发现对应的文件不是乱码的,这样的话就是镜像回写工具或者sd卡有损坏导致数据乱码,备份本身没问题。

经过验证,使用echer烧录的sd卡,有很多的烧录后读取不一致情况

换成dd后就完全一致了(虽然速度慢很多),实际使用无影响了。

因此可以确认,是echer工具恢复dd备份有什么问题,导致了恢复后文件损坏。

初始原因

经过上面的分析,sd卡本身是没有问题的,是echer工具的问题,那么为什么之前树莓派失联了呢?

最后把镜像恢复后,发现网卡是不亮的,这时候才发现是使用的网线松动了,重新插拔就可以正常连上了,之前认为sd卡损坏是错误的。

总结

有时候根据经验来判断,可能也会是错误的,还是要冷静分析,网络类的错误,首先要看下网卡的物理情况。。。


发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。