json - Docker 守护进程无法处理日志
问题描述
Docker daemon 无法解析 json 日志并抛出unexpected EOF
错误。我们正在调查问题的根本原因。
环境:
- Debian 4.9.189-3+deb9u2
- Docker 引擎 19.03.5
Docker 守护进程日志:
Apr 29 14:31:05 Prod-IS dockerd[30810]: time="2020-04-29T14:31:05.070677515+02:00" level=warning msg="got error while decoding json" error="unexpected EOF" retries=345
Apr 29 14:31:05 Prod-IS dockerd[30810]: time="2020-04-29T14:31:05.070695689+02:00" level=warning msg="got error while decoding json" error="unexpected EOF" retries=346
Apr 29 14:31:05 Prod-IS dockerd[30810]: time="2020-04-29T14:31:05.070712630+02:00" level=warning msg="got error while decoding json" error="unexpected EOF" retries=347
Apr 29 14:31:05 Prod-IS dockerd[30810]: time="2020-04-29T14:31:05.070732299+02:00" level=warning msg="got error while decoding json" error="unexpected EOF" retries=348
Apr 29 14:31:05 Prod-IS dockerd[30810]: time="2020-04-29T14:31:05.070755016+02:00" level=warning msg="got error while decoding json" error="unexpected EOF" retries=349
Apr 29 14:31:05 Prod-IS dockerd[30810]: time="2020-04-29T14:31:05.070773699+02:00" level=warning msg="got error while decoding json" error="unexpected EOF" retries=350
Docker 守护进程配置
"log-driver": "json-file",
"log-opts": {
"mode": "non-blocking",
"max-size": "500m",
"max-file": "3"
}
存储空间在 docker 写入其日志的分区上可用。
非常欢迎您对此事的见解。
解决方案
问题=Docker 引擎错误 json 文件:修复偶发的意外 EOF 错误
我花了一些时间研究并尝试在 docker 日志中查找错误。
docker engine 20.10.5 中有一个错误,它是在 docker 中运行的版本。Github PR 解决了这个问题。https://github.com/moby/moby/pull/42104
我在运行时发现错误
$ journalctl -u docker.service
level=warning msg="got error while decoding json" error="unexpected EOF" retries=19999
用于日志的 Docker 驱动程序有一个错误,它不会处理一些日志格式。然后,该错误会用重试消息淹没系统日志。这种情况会产生非常烦人的 CPU 负载。
Docker 引擎最新版本是 20.10.7。该问题已在发布 Docker 引擎 20.10.6 https://docs.docker.com/engine/release-notes/#20106中修复
推荐阅读
- spring - 如何动态地将方法添加到 Spring bean?
- ios - 是否可以使用 CBPeripheral 通过蓝牙从 iOS 连接到 macOS
- android - AAPT:错误:找不到资源 android:attr/colorError 并且找不到样式属性“android:attr/keyboardNavigationCluster”
- google-maps - 无法在 Google 地图信息窗口中获取按钮以推送到路由器
- sql - 如何在 Oracle 中使用 PL/SQL 或 SQL 查询将新行插入到查询结果中?
- c# - Cancellationtoken 异常未执行
- listview - 颤振:到达嵌套列表视图的底部时继续在顶部列表视图中滚动
- api - 如何使用 OpenSSL 修复“在发出证书请求的配置问题中找不到‘distinguised_name’”错误?
- c# - 无法使最小的 ASP .NET Core 3.1 WebSocket 示例正常工作
- postgresql - 使用查询中的值来定义使用 sequelize 的子查询的位置