我正在尝试从我正在码头容器中运行的命令中获取实时标准输出。但是,我需要通过从另一个主机运行的远程命令来执行此操作。
当我在docker主机上时,我可以使用-it运行我的docker命令,并获得所需的实时输出。但是,我有一个约束,我必须远程运行命令,使以前的解决方案毫无用处。我不能使用-t,因为它运行一个基于$TERM的伪终端,这个伪终端与远程命令不存在,因为根本没有终端。
我还尝试使用-d运行docker命令,以便在后台和docker logs -f <container>中运行它,但是在进程结束时仍然会立即给出输出。
如果这属于另一个堆栈,任何解决方案或建议都会得到赞赏和纠正。
发布于 2017-04-19 14:29:37
这是从码头的github的一些帮助中得出的。我没有提到我试图在容器中运行python脚本,但我认为它并不重要。
这实际上不是码头问题,而是python问题。我了解到Docker已经提供了实时的标准输出。Python将所有的stdout保存在它的缓冲区中,并且在脚本完成之前不会刷新。除非代码在带有-t的终端中运行。
在docker命令中,我所需要的只是用python -u <script>调用脚本,以防止python缓冲stdout。
发布于 2017-04-18 14:05:44
好吧,为什么不用ELK堆栈和log芽一起使用呢?您可以从所有的码头容器中获得实时日志,另外,您还可以在日志和其他许多很酷的东西中搜索。
https://unix.stackexchange.com/questions/359689
复制相似问题