管道 docker 将 -f 记录到 jq

era*_*ran 8 docker

我正在尝试将 json 日志从 docker 传输到jq. 如果我使用它,它工作正常:

docker logs container_id 2>&1 | jq '.'
Run Code Online (Sandbox Code Playgroud)

但是,如果我试图追踪它,它就会卡住。

docker logs -f container_id 2>&1 | jq '.'
Run Code Online (Sandbox Code Playgroud)

虽然尾随本身确实有效:

docker logs -f container_id 2>&1
Run Code Online (Sandbox Code Playgroud)

我在这里缺少什么?

小智 2

尝试添加--unbuffered --stream,让你的命令变成

docker logs -f container_id 2>&1 | jq --unbuffered --stream '.'
Run Code Online (Sandbox Code Playgroud)

似乎很多其他人也遇到过类似的问题。以下是 jq 上有关此主题的一些错误报告