Container chạy ổn không có nghĩa là log của nó ngừng tăng. Một service liên tục ghi ra stdout có thể làm phân vùng Docker đầy dần. Khi dùng driver json-file, hãy kiểm tra chính sách xoay vòng trước khi kết luận rằng file log đã có giới hạn.
Bài này tập trung vào Docker Engine, driver json-file và cấu hình service của Docker Compose. Tài liệu chính thức được đối chiếu ngày 27/10/2026. Các lệnh dưới dành để bạn kiểm tra môi trường của mình; lượt biên tập chưa chạy Docker daemon, tạo container hay đo dung lượng thực tế.
1. Xác định log nào đang được nói tới
Docker có thể thu stdout và stderr của tiến trình trong container qua logging driver. Một ứng dụng tự ghi vào /app/logs/server.log là một luồng lưu trữ khác. Đổi logging driver không tự xoay vòng file mà ứng dụng ghi trong volume.
Trước khi sửa cấu hình, xem phiên bản công cụ và thông tin service trong môi trường thử nghiệm:
docker --version
docker compose version
docker compose ps
Xác định đúng Compose project và tên service. Các ví dụ tiếp theo dùng service tên api; hãy thay bằng tên trong dự án của bạn. Không chạy lệnh tạo lại container trên production chỉ để thử một bài hướng dẫn.
2. Thêm chính sách riêng cho service
Thêm block logging vào service api đã có image hoặc build trong compose.yaml. Đây là một phần cấu hình, chưa phải file Compose hoàn chỉnh:
services:
api:
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"
max-size đặt kích thước để bắt đầu xoay file. max-file đặt số file được giữ; nó chỉ có hiệu lực khi có giới hạn kích thước. Giá trị chuỗi trong ví dụ tránh việc số 3 bị YAML đọc thành số thay vì option dạng chuỗi.
Đây là chính sách giữ log ngắn hạn cho từng container, không phải quota cho toàn bộ phân vùng. Số replica, các container khác, image, build cache, volume và phần lưu trữ của ứng dụng vẫn chiếm chỗ. Cũng không nên dùng phép nhân 10 × 3 như một cam kết byte chính xác của mọi trạng thái ghi log.
3. Tạo container mới rồi đọc lại cấu hình
Kiểm tra file Compose trước:
docker compose config --quiet
Trong môi trường thử nghiệm phù hợp, tạo lại riêng service đã sửa:
docker compose up -d --no-deps --force-recreate api
Lệnh này thay container của service và có thể gây gián đoạn. Trước khi dùng ở môi trường thật, kiểm tra volume, dữ liệu chưa lưu và kế hoạch cập nhật của nhóm. --no-deps tránh chủ động tạo lại các dependency, nhưng không làm việc thay container trở thành thao tác không gián đoạn.
docker compose restart api chỉ khởi động lại container hiện có; đừng dùng nó làm bằng chứng rằng logging option mới đã được áp dụng. Với thay đổi default ở daemon, các container cũ cũng giữ cấu hình lúc chúng được tạo. Tập trung kiểm tra container đang chạy thay vì chỉ đọc file cấu hình mong muốn.
4. Xác nhận từng container của service
docker compose ps -q api
docker inspect --format '{{json .HostConfig.LogConfig}}' CONTAINER_ID
docker logs --tail 50 CONTAINER_ID
Thay CONTAINER_ID bằng một ID từ lệnh đầu, rồi kiểm tra từng ID nếu service có nhiều replica. Kết quả inspect cần thể hiện Type là json-file và các option max-size, max-file bạn đặt. File Compose parse thành công chưa chứng minh container đã nhận cấu hình; inspect bổ sung bằng chứng đó.
Lệnh xem log chỉ cho bạn một cửa sổ nội dung. Muốn thử rotation, dùng một workload thử nghiệm ghi đủ log, quan sát dung lượng và xác nhận log cũ được thay theo chính sách. Bài không đưa kết quả dung lượng vì chưa thực hiện thử nghiệm này.
Lỗi thường gặp và bước tiếp theo
Nếu inspect vẫn là driver khác, kiểm tra bạn có đang xem đúng project, file override và container mới hay không. Nếu max-file có mà log vẫn không xoay, đối chiếu thêm max-size. Nếu phân vùng vẫn tăng nhanh, phân loại nơi chiếm chỗ trước khi đổi tiếp driver.
Không sửa, truncate hoặc tự xóa file log nội bộ của Docker bằng công cụ ngoài. Tài liệu Docker mô tả các file này do daemon quản lý; dùng giao diện quản lý log phù hợp và kế hoạch vận hành rõ ràng.
Docker cũng có driver local với cơ chế rotation mặc định; hãy đọc tài liệu và yêu cầu thu thập log của hệ thống trước khi chọn. Bài dùng json-file để giải thích một cấu hình phổ biến, không xếp hạng driver nào luôn tốt hơn.
Khi cần giữ log lâu dài, thiết kế nơi tập trung log cùng thời hạn lưu và kiểm soát dữ liệu nhạy cảm. Rotation tại container và lưu trữ phục vụ điều tra là hai nhu cầu cần được cấu hình cùng nhau.

