2016-01-11 24 views
11

Cách tốt nhất để tìm một chuỗi cụ thể trong nhật ký của vùng chứa docker là gì. Giả sử tôi muốn xem tất cả các yêu cầu, được thực hiện trong hình ảnh dock "nginx" đến từ một ip bắt đầu bằng "127".Tìm một chuỗi trong nhật ký docker của container

việc grep sẽ không như mong đợi trên lệnh log Docker:

docker logs nginx | grep "127." 

in tất cả các bản ghi, nhưng không lọc các kết quả!

+0

Câu hỏi là: cách tốt nhất để tìm một chuỗi cụ thể trong các bản ghi của một Docker là gì container – Robse

+0

'Bản ghi docker' có gửi đầu ra tới đầu ra tiêu chuẩn không? Bởi vì nếu nó thực hiện thì 'grep' sẽ hoạt động tốt. Nếu không thì nó hơi bị vỡ và bạn sẽ cần phải chuyển hướng lỗi tiêu chuẩn sang đầu ra tiêu chuẩn trước khi lọc bằng 'grep'. –

+1

kiểm tra stderr et atdout, trích xuất từ ​​https://github.com/docker/docker/issues/7440 '$ docker run -d --name foo busybox ls abcd $ docker logs foo> stdout.log 2> stderr.log $ cat stdout.log $ cat stderr.log ls: abcd: Không có tệp hoặc thư mục như vậy' – user2915097

Trả lời

2

Để theo dõi các nhận xét và làm rõ điều này cho bất kỳ ai khác nhấn vào vấn đề này. Đây là cách đơn giản nhất tôi có thể thấy để tìm kiếm một bản ghi container nginx.

docker logs nginx > stdout.log 2>stderr.log 
cat stdout.log | grep "127." 

IMO kinda của nó lộn xộn bởi vì bạn cần phải tạo ra và xóa những tập tin này có tiềm năng rất lớn. Hy vọng rằng chúng tôi sẽ nhận được một số công cụ để làm cho nó một chút thuận tiện hơn.

26

điều này có thể xảy ra nếu các container được đăng nhập để stderr, ống chỉ hoạt động cho thiết bị xuất chuẩn, vì vậy hãy thử:

docker logs nginx 2>&1 | grep "127." 
Các vấn đề liên quan