You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VM重启后Docker启动失败,报bbolt无效空闲列表页错误求助

Docker重启后启动失败:bbolt数据库freelist损坏故障排查与修复

问题现象

此前正常运行的Docker在VM重启后无法启动,执行sudo systemctl start docker命令启动失败,通过journalctl -u docker -f -n 1000查看日志,出现以下panic错误:

panic: invalid freelist page: 0, page type is unknown<00>
goroutine 1 [running, locked to thread]:
go.etcd.io/bbolt.(*freelist).read(0x5631b1518790?, 0x7fb8b81a5000)
        /root/rpmbuild/BUILD/src/engine/vendor/go.etcd.io/bbolt/freelist.go:267 +0x22e
go.etcd.io/bbolt.(*DB).loadFreelist.func1()
        /root/rpmbuild/BUILD/src/engine/vendor/go.etcd.io/bbolt/db.go:415 +0xb8
sync.(*Once).doSlow(0xc0006361c8?, 0x10?)
        /usr/local/go/src/sync/once.go:74 +0xc2
sync.(*Once).Do(...)
        /usr/local/go/src/sync/once.go:65
go.etcd.io/bbolt.(*DB).loadFreelist(0xc000636000?)
        /root/rpmbuild/BUILD/src/engine/vendor/go.etcd.io/bbolt/db.go:408 +0x47
go.etcd.io/bbolt.Open({0xc00075e570, 0x21}, 0x75e570?, 0x0)
        /root/rpmbuild/BUILD/src/engine/vendor/go.etcd.io/bbolt/db.go:290 +0x40c
github.com/moby/buildkit/solver/bboltcachestorage.NewStore({0xc00075e570, 0x21})
        /root/rpmbuild/BUILD/src/engine/vendor/github.com/moby/buildkit/solver/bboltcachestorage/storage.go:26 +0x2e
github.com/docker/docker/builder/builder-next.newGraphDriverController({_, _}, {_, _}, {0xc0011faee8, {0xc00083cf90, 0x18}, {0xc000c833e0, 0x24}, {0xc00118fc20, ...}, ...})
        /root/rpmbuild/BUILD/src/engine/builder/builder-next/controller.go:287 +0x1179
github.com/docker/docker/builder/builder-next.newController({_, _}, {_, _}, {0xc0011faee8, {0xc00083cf90, 0x18}, {0xc000c833e0, 0x24}, {0xc00118fc20, ...}, ...})
        /root/rpmbuild/BUILD/src/engine/builder/builder-next/controller.go:61 +0xe5
github.com/docker/docker/builder/builder-next.New({_, _}, {0xc0011faee8, {0xc00083cf90, 0x18}, {0xc000c833e0, 0x24}, {0xc00118fc20, {0x5631b219b080, 0xc001358e90}, ...}, ...})
        /root/rpmbuild/BUILD/src/engine/builder/builder-next/builder.go:113 +0x152
main.newRouterOptions({0x5631b2197ca8, 0xc000743aa0}, 0xc000b34000, 0xc000bd2240)
        /root/rpmbuild/BUILD/src/engine/cmd/dockerd/daemon.go:351 +0x808
main.(*DaemonCli).start(0xc000daa040, 0xc000a1e150)
        /root/rpmbuild/BUILD/src/engine/cmd/dockerd/daemon.go:265 +0x12a8
main.runDaemon(...)
        /root/rpmbuild/BUILD/src/engine/cmd/dockerd/docker_unix.go:14
main.newDaemonCommand.func1(0xc000b58000?, {0xc000b0a390?, 0x3?, 0x3?})
        /root/rpmbuild/BUILD/src/engine/cmd/dockerd/docker.go:39 +0x94
github.com/spf13/cobra.(*Command).execute(0xc000b58000, {0xc000052090, 0x3, 0x3})
        /root/rpmbuild/BUILD/src/engine/vendor/github.com/spf13/cobra/command.go:916 +0x862
github.com/spf13/cobra.(*Command).ExecuteC(0xc000b58000)
        /root/rpmbuild/BUILD/src/engine/vendor/github.com/spf13/cobra/command.go:1044 +0x3bd
github.com/spf13/cobra.(*Command).Execute(...)
        /root/rpmbuild/BUILD/src/engine/vendor/github.com/spf13/cobra/command.go:968
main.main()
        /root/rpmbuild/BUILD/src/engine/cmd/dockerd/docker.go:109 +0x18c
docker.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
docker.service: Failed with result 'exit-code'.
Failed to start Docker Application Container Engine.

排查思路

从日志栈可以明确:故障源于Docker BuildKit使用的bbolt数据库文件损坏,具体是数据库的freelist(空闲页链表)页无效,属于磁盘文件写入异常,基本是VM异常重启时未完成磁盘刷写导致的。

解决建议

修复步骤

  1. 停止所有Docker相关服务:
    sudo systemctl stop docker docker.socket containerd
    
  2. 备份损坏的数据库文件(避免后续需要恢复):
    sudo cp /var/lib/docker/buildkit/cache.db /var/lib/docker/buildkit/cache.db.bak
    
  3. 删除损坏的数据库文件:
    sudo rm /var/lib/docker/buildkit/cache.db
    
  4. 重新启动Docker服务:
    sudo systemctl start docker
    

验证

  • 检查Docker状态:systemctl status docker,确认服务处于active (running)状态
  • 测试容器运行:docker run --rm hello-world,验证基础功能正常

预防措施

  • 避免VM异常重启,重启前先正常停止Docker服务:sudo systemctl stop docker
  • 定期清理BuildKit缓存:docker builder prune,减少数据库文件大小,降低损坏风险
  • 确保VM存储介质可靠性,必要时使用带日志的文件系统(如ext4、XFS)

内容的提问来源于stack exchange,提问作者tanmoy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 17:41:04