如何将非 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 支持不同的日志驱动程序,用于存储和/或流式传输主容器进程(pid 1)的容器标准输出和标准错误日志
所以这可能是没有看到非pid 1进程日志的原因。
尽管如此,仍然不明白为什么ln -sf /dev/stdout /var/log/mysql/error.log创建的符号链接不起作用。
我对这个话题有同样的问题。我解决它的方式是,当docker运行而不是在 Docker 构建(Dockerfile)期间运行时,您需要启动“ln -s” 。
这是我的 shell bash 脚本
tail -n 0 -q -F /path/folder/*.log >> /proc/1/fd/1 &
希望有帮助
| 归档时间: | 
 | 
| 查看次数: | 2898 次 | 
| 最近记录: |