如何将非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 创建的符号链接无效。
答案 0 :(得分:1)
我对这个主题有同样的问题。我解决它的方法是,当Docker在Docker构建(Dockerfile)期间运行 NOT 时,你需要启动“ln -s”。
这是我的shell bash脚本
tail -n 0 -q -F /path/folder/*.log >> /proc/1/fd/1 &
希望帮助