所有具有容器名称的组合docker日志



所以我试图在日志文件中获得所有容器日志及其容器名称的组合输出docker日志--tail-3,容器名>gt;logst.log文件。

docker日志只接受一个命令,因此您必须为每个容器运行它们。我想我可以做点什么:

docker ps --format='{{.Names}}' | xargs -P0 -d 'n' -n1 sh -c 'docker logs "$1" | sed "s/^/$1: /"' _
  • docker ps --format='{{.Names}}'-打印容器名称
  • xargs-用于输入
    • -d 'n'-每条线
    • -P0-与任意数量的并行作业并行执行
      • 如果您不打算执行docker logs --follow,请删除此选项
      • 这可能会造成问题,请考虑添加stdbuf -oLsed -u以取消缓冲流
    • -n1-将一个参数传递给underyling进程
    • sh -c 'script' _-为每一行执行脚本,其中一行作为第一个位置参数传递
      • docker logs "$1"-获取日志
      • sed 's/^/$1: /'-在每个日志行前面加上docker名称

但一个更好的工业级解决方案是将docker日志转发到journalctl或其他日志解决方案,并使用该实用程序聚合和过滤日志。

明白了。

对于CCD_ 13中的i,;do{docker ps-a-q-format"表{{.ID}}\t{{.Names}}\n&quotgrep"$i〃&docker日志-时间戳-尾部1"$i〃;}>gt;logs.log;完成

logs.log是一个通用文件名。

最新更新