如何将非PID 1过程的日志重定向到 dockerlogs ,最终的目标是将它们重定向到 gelf ?
docker 容器中有2个进程:
1)PID 1过程
2)非PID 1的过程,该过程写入 path
的记录文件遵循Docker文档特别是
官方的nginx图像从/dev/stdout创建了一个符号链接,从/var/log/nginx/access.log创建了一个从/dev/stderr到/var/log/log/nginx/error.log,,创建另一个符号链接。覆盖日志文件并导致日志发送到相关的特殊设备。
无济于事。仅将 pid 1 过程日志重定向到 dockerlogs
执行步骤:
1 ln -sf /dev/stdout _path_
in dockerfile
2运行更新的图像作为容器。
3 docker logs -f _containerid_
仅显示 pid 1 Process
还有另一个官方的Docker Source
哪个指出
docker支持用于存储和/或流容器stdout和stderr日志的不同记录驱动程序(pid 1)
因此,也许是不看到非PID 1 Process的日志的原因。
不过,仍然不明白为什么 ln -sf/dev/stdout/var/log/mysql/mysql/error.log 的创建符号链接。
我在主题上也有同样的问题。我解决它的方式,您需要在Docker build(dockerfile)期间运行docker运行时启动" ln -s"。
这是我的shell bash脚本
tail -n 0 -q -F /path/folder/*.log >> /proc/1/fd/1 &
希望帮助