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

rok*_*rok 9 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

执行的步骤:

1ln -sf /dev/stdout _path_Dockerfile 中

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

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

还有另一个官方 docker 源

哪个州

Docker 支持不同的日志驱动程序,用于存储和/或流式传输主容器进程(pid 1)的容器标准输出和标准错误日志

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

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

kor*_*oro 9

我对这个话题有同样的问题。我解决它的方式是,当docker运行而不是在 Docker 构建(Dockerfile)期间运行时,您需要启动“ln -s” 。

这是我的 shell bash 脚本

tail -n 0 -q -F /path/folder/*.log >> /proc/1/fd/1 &
Run Code Online (Sandbox Code Playgroud)

希望有帮助