Để giới hạn kích thước file log của container Docker, bạn có thể cấu hình các tùy chọn logging khi khởi động container. Docker cung cấp một số tùy chọn để quản lý kích thước và số lượng file log.
Dưới đây là cách thực hiện:
1. Dùng tùy chọn --log-opt khi khởi động container
Bạn có thể giới hạn kích thước file log bằng cách thêm các tùy chọn --log-opt vào lệnh docker run:
docker run --log-opt max-size=10m --log-opt max-file=3 <image_name>
Giải thích:
max-size=10m: Giới hạn kích thước của mỗi file log là 10MB.max-file=3: Giới hạn số lượng file log là 3. Khi vượt quá giới hạn này, Docker sẽ xóa các file log cũ.
2. Cấu hình log mặc định cho Docker daemon
Nếu bạn muốn áp dụng giới hạn log cho tất cả các container, bạn có thể cấu hình log mặc định trong file cấu hình của Docker daemon (/etc/docker/daemon.json).
Mở file cấu hình này và thêm các tùy chọn log như sau:
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
Sau đó, khởi động lại Docker để áp dụng cấu hình:
sudo systemctl restart docker
Lưu ý
- Nếu bạn sử dụng một trình điều khiển log khác (như
sysloghoặcjournald), cấu hình có thể sẽ khác.
Đúng vậy, nếu bạn chỉ chạy container Docker bình thường mà không cấu hình, các container sẽ dừng và không tự khởi động lại sau khi hệ thống hoặc Docker daemon khởi động lại. Để tránh tình trạng này, bạn có thể cấu hình chế độ khởi động tự động cho container bằng tùy chọn --restart.
Các tùy chọn --restart
Khi chạy container, bạn có thể thêm tùy chọn --restart để cấu hình chế độ khởi động lại:
- no: Không khởi động lại container sau khi dừng hoặc khi Docker khởi động lại (đây là tùy chọn mặc định).
docker run --restart no <image_name>
- on-failure: Khởi động lại container chỉ khi có lỗi xảy ra (thoát với mã lỗi khác 0).
docker run --restart on-failure <image_name>
- always: Luôn khởi động lại container, ngay cả khi container được dừng bằng tay hoặc Docker daemon khởi động lại.
docker run --restart always <image_name>
- unless-stopped: Khởi động lại container trừ khi container bị dừng thủ công. Nếu bạn dừng container bằng tay, Docker sẽ không khởi động lại nó khi khởi động lại hệ thống hoặc Docker daemon.
docker run --restart unless-stopped <image_name>
Ví dụ
Nếu bạn muốn container tự khởi động lại sau khi Docker hoặc hệ thống được khởi động lại, dùng lệnh sau:
docker run --restart always <image_name>
Hoặc để khởi động lại trừ khi bạn dừng thủ công:
docker run --restart unless-stopped <image_name>
Lưu ý: Bạn có thể áp dụng cấu hình này cho các container đang chạy bằng cách sử dụng lệnh docker update:
docker update --restart always <container_id_or_name>
Sử dụng tùy chọn --restart giúp đảm bảo container hoạt động liên tục, ngay cả khi hệ thống hoặc Docker daemon khởi động lại.