Thứ Hai, 31 tháng 7, 2017

[Docker] Ghi log vào stdout và stderr

Trong docker, thông thường sẽ rất ít khi vào các container để check log. Vì vậy, log thường được redirect tới stdout hoặc stderr.

Nhưng hiện tại, docker có một bug, một non-root user không thể ghi log vào stdout hoặc stderr.
https://github.com/moby/moby/issues/6880#issuecomment-220637337

Giải pháp:
- Tạo một named pipe, set owner.
mkfifo -m 600 /tmp/logpipechown user:user /tmp/logpipe

- Chuyển hướng tất cả những gì được ghi vào named pipe đã tạo tới stdout (hoặc stderr)

cat <> /tmp/logpipe 2>&1 & (*)
Trong trường hợp (*) này, tất cả log sẽ được redirect sang stdout. Nếu muốn log được redirect sang stderr, dùng:
cat <> /tmp/logpipe 1>&2 &

Không có nhận xét nào:

Đăng nhận xét