Cấu hình Log Rotation cho Docker container
Thư mục /home/docker/.local/share/docker/containers/*/*json.log chiếm nhiều dung lượng. Để giải quyết vấn đề này, chúng ta cần cấu hình Log Rotation (xoay vòng log) để giới hạn kích thước tối đa của mỗi file log và số lượng file log được giữ lại.
1. Cấu hình cho toàn bộ hệ thống (Áp dụng cho mọi container mới)
Đây là cách tốt nhất để đảm bảo các container chạy sau này không bao giờ làm đầy ổ cứng của Server nữa. Đầu tiên chúng ta cần chỉnh sửa file cấu hình của Docker Daemon.
- Mở (hoặc tạo) file
daemon.json:
Bashsudo vi /etc/docker/daemon.json - Thêm nội dung sau vào file:
JSON{ "log-driver": "json-file", "log-opts": { "max-size": "10m", "max-file": "3" } }max-size(10m): Mỗi file log tối đa là 10 Megabytes. Khi đạt ngưỡng này, Docker sẽ tự động tạo file mới.max-file(3): Giữ lại tối đa 3 file cũ nhất. Khi có file thứ 4, file cũ nhất sẽ bị xóa. Tổng cộng chúng ta sẽ chỉ mất tối đa 30MB log cho mỗi container.
- Lưu file và khởi động lại Docker:
Bashsudo systemctl restart docker
Lưu ý: Cấu hình này chỉ áp dụng cho các container tạo mới sau khi restart. Các container đang chạy sẽ không bị ảnh hưởng.
2. Cấu hình cho từng container cụ thể
Nếu dùng docker run hoặc docker-compose, chúng ta có thể giới hạn log ngay trong câu lệnh/file đó.
- Dùng lệnh
docker run:
Bashdocker run -d \ --log-driver json-file \ --log-opt max-size=10m \ --log-opt max-file=3 \ your_image - Dùng
docker-compose.yml:
YAMLservices: app: image: your_image logging: driver: "json-file" options: max-size: "10m" max-file: "3"
3. Cách dọn dẹp các file log hiện tại (Xử lý ngay lập tức)
Nếu ổ cứng đã đầy và chúng ta cần xóa nhanh log của các container đang chạy mà không muốn xóa container đó, chúng ta có thể dùng lệnh sau:
# Xóa trắng nội dung tất cả các file log .json của container
find /home/docker/.local/share/docker/containers/ -name "*-json.log" -exec truncate -s 0 {} +
Lệnh này sẽ tìm tất cả các file kết thúc bằng *-json.log và đưa kích thước của chúng về 0 mà không làm gián đoạn ứng dụng đang chạy.
Tổng kết
Để giải quyết triệt để, chúng ta nên thực hiện Cách 1 (sửa file daemon.json). Sau đó, xóa các container cũ và chạy lại (docker-compose up -d hoặc docker run) để chúng nhận cấu hình giới hạn dung lượng mới.


Không có bình luận nào để hiển thị
Không có bình luận nào để hiển thị