linux Docker容器-从main进程以外的进程发送日志(PID 1)

tvokkenx  于 2023-06-29  发布在  Linux
关注(0)|答案(1)|浏览(180)

我可以看到所有来自my-container的主/初始进程(PID1)的STDOUTSTDERR都被发送到docker logs my-container,这对在这个进程中运行的任何应用程序都是有效的。
例如,当我将docker attach发送到我的容器时,echo和其他命令的输出都被发送到日志,但是当我在主进程以外的进程中时,例如当我运行docker exec时,没有任何输出被发送到日志。有什么办法吗?

fykwrbwg

fykwrbwg1#

将输出重定向到/proc/1/fd/1以将其放入日志中。
例如,使用

docker run -d --name mycontainer debian tail -f /dev/null

然后将/etc/os-release的内容放入日志中

docker exec mycontainer sh -c 'cat /etc/os-release > /proc/1/fd/1'

请注意,您必须在单引号中重定向。如果不这样做,它将由主机上的shell处理。通过使用引号,它由容器内的shell处理,这就是你想要的。
docker logs mycontainer现在将显示文件的内容。
因此,基本上,您可以向/proc/1/fd/1写入任何内容,它都会显示在日志中。

相关问题