«

群晖 Docker 容器启动失败:database is locked 解决办法

myluzh 发布于 阅读:9 NOTES


0x01 故障现象

在群晖(Synology)环境,尝试启动一个 Docker 容器时,命令行或 Container Manager 弹出如下报错,导致容器完全无法启动:

Error response from daemon: failed to create task for container: failed to initialize logging driver: database is locked
Error: failed to start containers: XXXX

0x02 解决过程

从报错信息 failed to initialize logging driver: database is locked 可以明确看出,是 Docker 的日志驱动在初始化时,发现底层 SQLite 数据库被锁死了。
解决思路非常简单粗暴:直接找出并干掉这个被锁死的日志数据库文件,让 Docker 重新生成一个干净的即可。
具体操作步骤如下(需要 SSH 登录到群晖并切换到 root 权限):

# 1、查找故障容器的日志文件路径, 利用 docker inspect 提取该容器的 LogPath,我这边容器名称是blog-pro-php
root@SA6400:~# docker inspect --format='{{.LogPath}}' blog-pro-php
/volume1/@docker/containers/ade3d41604b8fb9b129ecc238df250a4f676463a6d6aaf2fc8c57d8b99f9403e/log.db
# 2、物理删除卡死的 log.db 文件
root@SA6400:~# rm /volume1/@docker/containers/ade3d41604b8fb9b129ecc238df250a4f676463a6d6aaf2fc8c57d8b99f9403e/log.db
# 3、重新启动容器,完成
root@SA6400:~# docker start blog-pro-php
blog-pro-php


正文到此结束
版权声明:若无特殊注明,本文皆为 Myluzh Blog 原创,转载请保留文章出处。
文章内容:https://itho.cn/notes/582.html
文章标题:《群晖 Docker 容器启动失败:database is locked 解决办法