记一个错误使用 Docker Logging 的案例
博主竟然都没发现自己已经错误的使用 docker logging 好几年了。
博主习惯用 fluentd 收集容器和应用的日志,类似如下配置:
1 | logging: |
既然是使用 Docker 那么想当然的就要用 Docker 启动 fluentd 了,同时在使用 docker-compose 编排容器时给所有其他容器添加了 depends_on: - fluentd
配置,以保证其他容器在启动时日志服务已经起来。
本来正常使用是没有问题的,但是当 Docker 服务重启(主机重启或直接重启服务)后,发现即使时添加了 restart:always
的容器也没有自动重启,纷纷停留在 Exit 状态。
通过排查,尝试将 fluentd 直接运行在宿主机上后容器重启正常,问题解决。个人猜测 Docker 在经历重启后并没有按照 docker-compose 的 depends_on 顺序进行重启,而部分重启在尝试重启时发现日志服务不在线固重启失败。
另外 fluentd 的主机安装方式可以参考 Fluentd Installation