9

如何将非 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 将更新后的映像作为容器运行。

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

还有另一个官方 docker 源

哪个州

Docker 支持用于存储和/或流式传输主容器进程 (pid 1) 的容器 stdout 和 stderr 日志的不同日志记录驱动程序

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

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

4

1 回答 1

9

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

这是我的 shell bash 脚本

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

希望有所帮助

于 2018-05-29T00:22:31.903 回答