欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

一次docker错误的耗时排查过程记录

程序员文章站 2022-07-04 20:52:55
由来客户是深信服的订制系统,基于 centos 改的,排查半天发现居然是文件损坏,而不是 docker 的问题。环境信息docker信息:系统信息服务器信息:排查过程安装docker服务器挂了时间20...

由来

客户是深信服的订制系统,基于 centos 改的,排查半天发现居然是文件损坏,而不是 docker 的问题。

环境信息

docker信息:

系统信息

服务器信息:

排查过程

安装docker服务器挂了

时间2020 10/29 19:51:

实施: 客户这边部署的时候安装docker的时候服务器挂了
我: 开机后/var/log/message有信息吗
实施: 只能恢复快照才能进去,服务器进不了,看不了信息
我: 不恢复快照起不来吗
实施: 是的

到这里我以为是触发了啥内核 bug 直接内核 panic 了服务器起不来。

时间2020 10/30 9:07:

我: 起不来的时候有进控制台去看啥原因起不来吗
实施: 是客户服务器没法查看呢
我: 客户没去看下吗

然后实施直接发来一个向日葵远程连接,我上去后发现不是常规的操作系统,是基于 centos 改过的,没找到/var/log/message,然后手动执行我们的 docker 安装脚本。

然后输出的信息在某一步就没输出了,应该”挂了”,看了下脚本最后一条输出调试信息的后面是启动 docker,应该是启动 docker 触发的。然后很久后还是无法连上和 ping 通,叫实施问问那边现场看看是硬件服务器的话有没有 idrac,ilo 之类的看看 tty 控制台的信息。

现场人员看了下服务器是”正常开机”的,我这边尝试还是连不上,现场问我们的操作是否是改了路由,现场 systemctl 看了下 docker 是起来的。现场那边还是 ping 不通网关。我这边突然想到是不是压根没挂。。。

叫他 uptime -s 看看上次的启动时间,结果压根没重启。。。

然后现场排查到是 iptables 的问题,启动 docker 的时候把他们的规则刷没了。后面他们改了下都放开了。所以前面的启动 docker 把机器挂了实际上是iptables的影响导致网络断开,机器压根没重启。

启动容器挂掉

然后继续,实施说之前同样的其他机器安装 docker 的时候没出现上面的问题,而是启动的时候出现上面的问题,我就手动执行下部署,结果报错。脚本开-x调试看是load 部署镜像的时候报错了。

手动执行下:

jounalctl 看了下 docker daemon 没任何相关日志,这个报错搜了下有的人说是 /var/run/docker.sock 的 docker 组不存在,也有人直接chmod 777解决的。试了下还是不行。前台 debug 下 docker 看看有没有有用的信息:

另开一个终端执行 load 镜像操作:

调试这边前台日志输出正常

看了下systemd的配置没啥特殊的,就很迷,不知道为啥前台运行就能导入,后面实在想不到怎么排查,就怀疑可能是 socket 问题,尝试用 socat 转发成 tcp 试试,结果还是不行(此处应该daemon那加tcp 监听127试试,不应该通过socket,socat最终也是过的socket)

最后耗了挺久的,当时忙,去看了下另一个客户的问题,然会回到这边,突发奇想的试试 load 其他镜像,结果可以。。。

只有导入这个的时候才报错

然后出包的机器上对比了下这个文件的校验值发现不对。。。。

总结

有个疑问就是为啥前台可以,其次文件损坏导入的时候 docker daemon 居然不刷任何日志直接 connection reset,新版本没测试过这种情况。

到此这篇关于docker错误的耗时排查过程记录的文章就介绍到这了,更多相关docker错误耗时排查内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!