Mỗi Docker daemon có một driver log, để thực hiện cơ chế ghi nhận log cho hoạt động của Docker daemon cũng như log của các container. Mặc định cấu hình log của container sử dụng giống của Docker daemon trừ trường hợp bạn cấu hình riêng cho từng container.

Như vậy các log trong container được cấu hình về giới hạn, kích thước bởi Docker, một file log có thể lớn dần lên đến mức có thể chiếm hết cả ổ cứng. Do vậy, bạn cũng cần lưu ý về cấu hình log cho Docker và các Container.

Cấu hình Log cho Docker Daemon

Mở file daemon.json ra để thiết lập, nếu chưa có file này thì tạo mới nó nằm ở đường dẫn: /etc/docker/daemon.json, trên Windows thì ở đường dẫn C:\ProgramData\docker\config\daemon.json

Bạn có thể biên tập nội dung của file này như sau:

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3",
    "labels": "production_status",
    "env": "os,customer"
  }
}

Cấu hình trên mặc định thiết lập driver sử dụng xuất ra file log dạng json, kích thước tối đa của mỗi file là 10m và cho phép lưu tối đa 3 file log. Bạn chỉ việc điều chỉnh cỡ theo nhu cầu và khởi động lại Docker

systemctl restart docker

Cấu hình Log cho Container

Bạn có thể thiết lập cho Container sử dụng riêng cấu hình lưu log, sử dụng bằng tham số khi chạy container bằng lệnh docker run như tham số:

--log-opt max-size Chỉ ra cơ lớn nhất của 1 file log (mặc định là 20m), bạn có thể sử dụng các đơn vị k, m, g
--log-opt max-file chỉ ra số lượng file log, mặc định là 5

Ví dụ:

docker run -it --log-opt max-size=2m --log-opt max-file=2 ubuntu

Bạn có thể thực hiện thiết lập trong docker-compose.yaml, ví dụ:

version: '3'

services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.8.0
    container_name: elasticsearch
    ... 
    logging:
      options:
        max-size: "1m"
        max-file: "2"

# networks: ...
# volumes: ...

Đăng ký nhận bài viết mới