将非pid 1进程的输出重定向到docker日志

时间:2017-12-11 09:00:36

标签: docker gelf

如何将非pid 1进程的日志重定向到 dockerlogs ,最终目标是将它们重定向到 gelf

docker 容器中有2个进程:

1)pid 1流程

2)非pid 1进程,写入路径

的日志文件

关注docker docs 特别是

  

官方nginx图像创建从/ dev / stdout到/var/log/nginx/access.log的符号链接,并创建从/ dev / stderr到/var/log/nginx/error.log的另一个符号链接,覆盖日志文件并导致日志被发送到相关的特殊设备。

没有帮助。 只有 pid 1 进程日志被重定向到 dockerlogs

执行步骤:

Dockerfile

中的

1 ln -sf /dev/stdout _path_

2将更新的图像作为容器运行。

3 docker logs -f _containerid_仅显示 pid 1 进程的日志

another official docker source

哪个州

  

Docker支持用于存储和/或流式传输主容器进程的容器stdout和stderr日志的不同日志驱动程序(pid 1)

所以它可能是没有看到非 pid 1 进程日志的原因。

尽管如此,仍然不明白为什么 ln -sf / dev / stdout /var/log/mysql/error.log 创建的符号链接无效。

1 个答案:

答案 0 :(得分:1)

我对这个主题有同样的问题。我解决它的方法是,当Docker在Docker构建(Dockerfile)期间运行 NOT 时,你需要启动“ln -s”。

这是我的shell bash脚本

tail -n 0 -q -F /path/folder/*.log >> /proc/1/fd/1 &

希望帮助