因此,我尝试在日志文件中获取所有容器日志及其容器名称的组合输出 docker日志--tail -3 和容器名称 >> logst.log文件。
答案 0 :(得分:0)
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 -oL
和sed -u
来取消缓冲流-n1
-将一个参数传递给底层处理sh -c 'script' _
-为每行执行脚本,并将行作为第一个位置参数传递
docker logs "$1"
-获取日志sed 's/^/$1: /'
-在每个日志行之前添加docker名称的名称但是,一种更好的工业级解决方案是将docker日志转发到journalctl
或其他日志记录解决方案,并使用该实用程序来聚合和过滤日志。
答案 1 :(得分:0)
知道了。
在docker ps -a -q --format "table {{.ID}}"
中为我;做{docker ps -a -q --format“表{{.ID}} \ t {{。Names}} \ n” | grep“ $ i”和docker日志--timestamps --tail 1“ $ i”; } >> logs.log;完成
logs.log是通用文件名。