如何修复 Synology Docker: failed to initialize logging driver: database is locked
问题:
当你尝试使用 Synology NAS GUI 启动特定 Docker 容器时,容器被意外停止,你在日志中看到类似这样的错误消息:
synology_docker_error_output.txt
Start container mycontainer failed: {"message":"failed to initialize logging driver: database is locked"}.
Signal container mycontainer failed: {"message":"Cannot kill container: mycontainer: Container 5136ddceeb46004c5b18f04eb9ec10cac3808938515874fc31185b0964232201 is not running"}.解决方案
我通过停止容器、复制容器会话来修复此问题:右键点击容器 -> 设置 -> 复制设置
这将使用给定设置创建一个新容器。注意本地端口将设置为自动且不会被复制,因此如果你使用固定本地端口,需要在原始容器中将它们设置为不同的值,然后在新容器中将本地端口设置为所需的固定值。还请注意容器内的文件不会被复制。在我的配置中,所有相关文件都存储在 NAS 上的映射卷中。
此问题的根本原因似乎是此特定容器的日志数据库已被某个进程锁定。此问题始终限于特定容器且不会影响其他容器(尽管原则上可能发生在多个容器上)。我知道至少在我的特定情况下,此问题不是由重启引起的,也不会通过重启 Synology NAS 来修复。就在我遇到此问题之前,我的 NAS 已经几个月没有重启了,但它可能与 Synology 包更新有关,因为我在遇到此问题之前刚使用包管理器更新了一些包,包括Synology Mail Plus 更新,第一次尝试失败,但当我再次点击更新时成功了。
Check out similar posts by category:
Docker, Networking
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow