同时查看所有docker容器的日志
发表于:2022-06-16 |
我目前使用docker作为后端,当我第一次用

启动时
docker-compose up
我一次得到所有4个码头工人的日志输出,所以我可以看到他们在请求进来时如何相互交互。看起来像这样,一个请求从nginx到couchdb

http://i.imgur.com/E4GQ43F.png

现在的问题是我在GCE上运行负载均衡,当新VM启动时,它会自动启动docker并正常运行,我希望能够访问负载均衡的VM并查看实时日志,但我不能让docker允许我这种风格,当我使用日志时,它给我正常的所有白色字体,没有标签来自它。

使用docker events  
什么都不做,它不会返回任何信息。

    tldr;获取视图的最佳方式是什么,与运行时获得的日志输出相同" docker-compose up"

5 个答案:


如果使用docker-compose,请使用

docker-compose logs --tail=0 --follow
而不是

docker logs --tail=0 --follow
这将获得我最初寻找的输出。


您可以使用以下命令查看所有正在运行的容器的日志

docker ps -q | xargs -L 1 docker logs
理论上,如果xargs与--follow一起运行,而xargs的数量大于正在运行的容器的数量,那么这对-P <count>也可能适用。



我使用此变量的变体来尾部(-跟随)所有日志,并指示当时哪个日志在尾部。此bash包括stdout和stderr。请注意,之后您可能需要清除*。{log,err}的/ tmp目录。

for c in $(docker ps -a --format="{{.Names}}")
do
       docker logs -f $c > /tmp/$c.log 2> /tmp/$c.err &
done
tail -f /tmp/*.{log,err}
希望这会有所帮助。如今,伐木变得如此麻烦,而其他下车的老人都在抱怨...

答案 3 :(得分:1)

如果使用的是Docker Swarm,则可以通过以下方式找到服务

docker service ls
获取ID,然后运行

docker service logs $ID -f 
如果使用tty:true定义服务,则必须使用--raw标志运行。请注意,这不会告诉您哪个容器正在提供输出的日志条目。

      
     
      

试试“看”
这是一个用于 docker 容器的快速而肮脏的 multitail/xtail。

#watch 'docker ps --format "{{.Names}}" | sort | xargs --verbose --max-args=1 -- docker logs --tail=8 --timestamps'
根据需要调整参数“--tail=8”,使所有内容仍然适合一个屏幕。

当容器停止和重新启动时,上面列出的“xargs”方法将停止工作。这里的这种“观察”方法没有这个问题。 (但也不是很好。)
上一篇:
Linux修改文件句柄数及vm.max_map_count、stack size
下一篇:
我要自学网