主机异常断电后docker启动失败
1.通过命令查看docker启动失败的原因
豆包给出的指令:sudo journalctl -u docker.service
gpt给出的指令:sudo journalctl -u docker --no-pager | tail -n 100
还是gpt给力一点
把日志发给gpt进行分析 发现是containerd的问题
当我执行
sudo systemctl status containerd
发现containerd的状态是运行失败的
执行
sudo journalctl -u containerd.service -n 50 --no-pager
将日志发给gpt进行分析
发现关键错误是:
panic: invalid page type: 24: 10
这表明 containerd 在访问其元数据库(基于 bbolt 键值存储)时遇到了损坏或不一致的问题。错误发生在 metadata.scanRoots 函数中,可能是由于断电导致数据库文件(通常位于 /var/lib/containerd/io.containerd.metadata.v1.bolt)损坏。
解决步骤:
在修复之前,备份 containerd 数据目录以防止数据丢失:
sudo cp -r /var/lib/containerd /var/lib/containerd.bak
删除损坏的数据库文件:
sudo rm -f /var/lib/containerd/io.containerd.metadata.v1.bolt
但是当我执行删除命令时 提示我删除的不是文件 而是一个目录
rm: cannot remove '/var/lib/containerd/io.containerd.metadata.v1.bolt': Is a directory
通过命令:
ls -l /var/lib/containerd/io.containerd.metadata.v1.bolt
发现该目录下只有一个文件:
-rw-r--r-- 1 root root 524288 May 5 20:21 meta.db
由于之前已经备份过文件 这次直接删除文件即可
sudo rm -f /var/lib/containerd/io.containerd.metadata.v1.bolt/meta.db
然后通过命令:
sudo systemctl status containerd
看到该服务已经是running状态
这时候去启动docker 发现仍然启动失败
同样 我们用一样的命令去查询docker启动失败的日志:
sudo journalctl -u docker -n 100 --no-pager
当把日志提供给gpt后 提示我们关键错误信息:
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x1c pc=0x55cdeeab7455]
goroutine 1 [running, locked to thread]:
github.com/docker/docker/libnetwork.(*endpointCnt).EndpointCnt(0xc000e6e7e0?)
/root/build-deb/engine/libnetwork/endpoint_cnt.go:101 +0x35
Docker 在初始化网络配置(configureNetworking)时崩溃
判断原因是:
数据目录损坏:/var/lib/docker 中的网络配置(通常存储在 network 子目录或键值存储中)因断电而损坏,导致 Docker 无法正确加载网络信息。
残留状态:断电可能导致 Docker 的网络状态或锁文件异常,触发了崩溃。
只能清理这些文件了
先停止之前的服务:
sudo systemctl stop containerd
删除
sudo rm -rf /var/lib/docker/network
然后依次启动:
sudo systemctl start containerd
sudo systemctl start docker
这时候已经能正常启动docker了
然而我的容器仍然有部分启动 我通过单个启动时提示缺少example_default网络
应该是之前配置了网络
首先创建:
sudo docker network create example_default
然后连接
sudo docker network connect example_default f0f4a633a35b
至此 已经都能正常启动了

解决完成 感谢gpt 告辞
更多推荐
所有评论(0)