我目前使用docker作为后端,当我第一次用
启动时docker-compose up
我一次得到所有4个码头工人的日志输出,所以我可以看到他们在请求进来时如何相互交互。看起来像这样,一个请求从nginx到couchdb
现在的问题是我在GCE上运行负载均衡,当新VM启动时,它会自动启动docker并正常运行,我希望能够访问负载均衡的VM并查看实时日志,但我不能让docker允许我这种风格,当我使用日志时,它给我正常的所有白色字体,没有标签来自它。
使用
docker events
什么都不做,它不会返回任何信息。
tldr;获取视图的最佳方式是什么,与运行时获得的日志输出相同" docker-compose up"
答案 0 :(得分:18)
如果使用docker-compose,请使用
docker-compose logs --tail=0 --follow
而不是
docker logs --tail=0 --follow
这将获得我最初寻找的输出。
答案 1 :(得分:8)
您可以使用以下命令查看所有正在运行的容器的日志
docker ps -q | xargs -L 1 docker logs
理论上,如果xargs与--follow
一起运行,而xargs的数量大于正在运行的容器的数量,那么这对-P <count>
也可能适用。
答案 2 :(得分:1)
我使用此变量的变体来尾部(-跟随)所有日志,并指示当时哪个日志在尾部。此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标志运行。请注意,这不会告诉您哪个容器正在提供输出的日志条目。
答案 4 :(得分:0)
这是一个用于 docker 容器的快速而肮脏的 multitail/xtail。
# watch 'docker ps --format "{{.Names}}" | sort | xargs --verbose --max-args=1 -- docker logs --tail=8 --timestamps'
根据需要调整参数“--tail=8”,使所有内容仍然适合一个屏幕。
当容器停止和重新启动时,上面列出的“xargs”方法将停止工作。这里的这种“观察”方法没有这个问题。 (但也不是很好。)