问题
执行以下命令没有在docker logs的结果中查找字符串,而是会输出了所有的日志
docker logs nginx | grep 127
分析
这是因为管道符仅对stdout有效,如果容器将日志记录到stderr,这种情况就会发生。
解决方法
像下面这样写,把stderr重定向到stdout中:
docker logs nginx 2>&1 | grep 127
还有一种方式,但是写法比较麻烦
grep 127 `docker inspect --format={{.LogPath}} nginx`
如果正在使用docker-compose的话,可以直接使用docker-compose中的logs命令:
docker-compose logs nginx | grep 127