어느날 서버 디스크가 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"