Tại sao phải sử dụng docker logs?
Trong quá trình triển khai docker thì việc theo dõi các tiến trình của docker cũng rất cần thiết. Docker logs hỗ trợ quản trị viên monitor các thông số của container trong docker.
1.Đễ xem log docker container
docker logs <container_id>
2. Xem log realtime dùng option -f hoặc –follow
docker logs -f <container_id>
3. Xem cụ thể số dòng log
Khi dùng lệnh docker logs thì nó sẽ show tất cả các log từ ban đầu, đễ đặt cụ thể số dòng log hiển thị ta dùng option –tail
docker logs -f --tail <số dòng> <container_id>
Ngoài ra còn có các option khác:
--since
: Hiển thị log từ thời điểm xác định--util
: Hiển thị log tới thời điểm xác định--details
: Hiển thị chi tiết log
4. Xóa log trong docker
Sau một thời gian triển khai thì dung lượng ở cứng bị đầy. Lúc này ngoài kiểm tra dung lượng docker image, docker container thừa thải không sử dụng. Ta còn phải kiểm tra log của container thường thì nó sẽ chứa trong 2 đường dẫn
./var/lib/docker/containers ./var/lib/docker
Mặc định docker lưu log trong folder /var/lib/docker/containers, và mặc định thì log sẽ ko bị giới hạn kích thước nên sẽ tăng dần theo thời gian. Dùng lệnh đễ xem dung lượng bị chiếm giữ:
du -h | sort -h
Kết quả hiện ra:
10G ./var/lib/docker/containers 14G ./var/lib/docker
/var/lib/docker/containers
: Lưu log của các container (mặc định lưu dưới dạng file JSON).
Hướng giải quyết: là dùng truncate đễ clear log
sudo sh -c 'truncate -s 0 /var/lib/docker/containers/*/*-json.log'
Sau khi truncate:
230MB ./var/lib/docker/containers
5. Clear file log định kì với Logrotate
Logrotate là một tiện ích tuyệt vời trên Linux giúp đơn giản hóa việc quản lý log files trên hệ thống, bao gồm xoay vòng file log, di chuyển, nén, gửi tự động… Rotate (xoay vòng) ở đây có thể hiểu là tiến trình xử lý file log cũ theo quy định trước đó (xóa/nén/move) đồng thời tạo ra file log mới.
cd /etc/logrotate.d sudo touch docker-logs
Chỉnh sửa nội dung file docker-logs
/var/lib/docker/containers/*/*.log { rotate 7 daily compress size=50M missingok delaycompress copytruncate }