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

标签 docker gelf

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

docker 容器内有 2 个进程:

1) pid 1进程

2) 非 pid 1 进程写入路径的日志文件

已关注 docker docs 具体来说

The official nginx image creates a symbolic link from /dev/stdout to /var/log/nginx/access.log, and creates another symbolic link from /dev/stderr to /var/log/nginx/error.log, overwriting the log files and causing logs to be sent to the relevant special device instead.

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

执行的步骤:

1ln -sf/dev/stdout _path_ Dockerfile

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

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

another official docker source

哪些州

Docker supports different logging drivers used to store and/or stream container stdout and stderr logs of the main container process (pid 1)

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

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

最佳答案

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

这是我的 shell bash 脚本

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

希望有帮助

关于docker - 将非 pid 1 进程的输出重定向到 docker 日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47749311/

相关文章:

postgresql - 检查 TestContainers 的内容

angular - 从 Angular 7 迁移到 12 后出现混合内容错误

docker - 在Github Actions上从package.json安装私有(private)github包

docker - 如何在每个 Pod 的基础上从 Kubernetes 将日志发送到 GELF UDP 端点

java - 将日志发送到 Graylog 并以 Gelf 格式发送

docker - 无法通过 docker-letsencrypt-nginx-proxy-companion 启用 ssl

docker - 使用 yaml 文件配置运行 Kubectl

java - 如何扩展 log4j2 gelf 附加程序 (biz.paluch.logging) 以添加自定义 GelfSender

docker - 是否可以使用gelf将日志从docker容器中继到多个服务器?