海外主机测评

您现在的位置是:首页 > 国外服务器 > 正文

国外服务器

记录在同一主机上运行的多个容器的解决方案

cds8202023-02-05国外服务器138
本站教程收集整理的这篇文章主要介绍了记录在同一主机上运行的多个容器的解决方案,本站教程本站觉得挺不错的,现在分享给大家,也给大家做个参考。

本站教程收集整理的这篇文章主要介绍了记录在同一主机上运行的多个容器的解决方案,本站教程本站觉得挺不错的,现在分享给大家,也给大家做个参考。

目前,我们将所有应用程序日志从多个容器重定向到stdout,并通过主机中的rsyslog将/ var / log / message收集到ELK堆栈.

所有docker容器日志显示为docker / xxxxxxxx,我们无法分辨这个日志的应用程序,无论如何我们可以轻松地将应用程序与docker stdout中的多个容器日志区分开来?

最佳答案 (OS X的说明,但应该在Linux中工作)

似乎没有办法使用docker命令执行此操作,但是在bash中,您可以同时运行多个命令,而使用sed,您可以使用容器名称作为前缀.

docker logs -f --tail=30 container1 | sed -e 's/^/[-- containerA1 --]/' &
docker logs -f --tail=30 container2 | sed -e 's/^/[-- containerM2 --]/' &

并且您将同时看到两个容器的输出.

[-- containerA1 --] :: logging line
[-- containerA1 --] :: logging line
[-- containerM2 --] :: logging line
[-- containerM2 --] :: logging line
[-- containerA1 --] :: logging line
[-- containerA1 --] :: logging line
[-- containerM2 --] :: logging line
[-- containerM2 --] :: logging line

要立即拖尾所有容器:

#!/bin/bash

names=$(docker ps --format "{{.Names}}")
echo "tailing $names"

while read -r name
do
  # eval to show container name in jobs list
  eval "docker logs -f --tail=5 \"$name\" | sed -e \"s/^/[-- $name --] /\" &"
  # For Ubuntu 16.04
  #eval "docker logs -f --tail=5 \"$name\" |& sed -e \"s/^/[-- $name --] /\" &"
done 

并阻止他们运行fg,然后按ctrl c为每个容器.

更新:感谢@ Flo-Woo支持Ubuntu 16.04

本站总结

以上是本站教程为你收集整理的记录在同一主机上运行的多个容器的解决方案全部内容,希望文章能够帮你解决记录在同一主机上运行的多个容器的解决方案所遇到的程序开发问题。

如果觉得本站教程网站内容还不错,欢迎将本站教程推荐给好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。

VPS推荐


《记录在同一主机上运行的多个容器的解决方案》来自互联网同行内容,若有侵权,请联系我们删除!

发表评论

评论列表

  • 这篇文章还没有收到评论,赶紧来抢沙发吧~