Docker Logging Disk Full

By | 2021년 3월 2일

어느날 서버 디스크가 full이 되었다.

원인을 찾아보니 원인은 docker container의 log파일이 17기가였다. 한 컨테이너의 로그파일이…;;

docker의 기본 loggin driver는 json-file (그 외에도 local, syslog 등 여러가지가 있음.)

json-file의 경우 max-size는 -1이다. 즉 무제한이다…;;

설정값 참고 : https://docs.docker.com/config/containers/logging/json-file/

$ docker run \
      --log-driver json-file --log-opt max-size=10m \
      alpine echo hello world

요렇게 max-size를 지정해주면 지정한 사이즈 이상 커지지 않는다.

docker-compose에서 적용은

version: "3.7"
services:
  metricbeat:
    image: docker.elastic.co/beats/metricbeat:7.1.0
    container_name: monitor-metricbeat
    user: root
    environment:
      - TZ=Asia/Seoul
      - ES_HOSTS=${ES_HOSTS}
      - KIBANA_HOST=${KIBANA_HOST}
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /proc:/hostfs/proc:ro
      - /sys/fs/cgroup:/hostfs/sys/fs/cgroup:ro
      - /:/hostfs:ro
    command: ["-e", "-system.hostfs=/hostfs", "-strict.perms=false"]
    restart: always
    network_mode: "host"
    logging:
      driver: "json-file"
      options:
        max-size: "10m"