Docker log file 주기적으로 삭제 및 관리(logrotate 사용)

2022. 2. 28. 11:24프로그래밍 개발(Development)/Docker

반응형

Docker container가 실행이 되고 삭제가 되기 전까지 로그파일은 용량을 지속적으로 차지한다.

 

그래서 주기적으로 로그파일을 백업 및 삭제 하는 방법을 알아보자.

 

log 파일은 아래의 경로에 위치해 있으며 현재 로그 파일의 용량을 확인해보자.

1. container 용량 확인

# root 계정 필요
$ cd /var/lib/docker/containers/
$ du -hs *
36K     33aac3be35570e29fa284cefd60f5ad0980b07c41e75978007bf18fdcb38f5da
40K     48b82fb406673de55538fdf7f60dba0e74bc68508d77dfd6a6aa326f63e864b2
36K     69d6eeb5e635774976bc8aa5bd9fe9d3958b3e7c10d6ddc080041602e37a3759
40K     8b97034bb32e4600ad75ff1a33f1b657b3881910754a6af1897f074a819dc8a9
40K     a688c0c0a01d18c23b72442a8267fa30e80d4715c590499f62398c4164cd9827
44K     cf400eefe3757cd287557c195515d39fcf80a264beaccb3f60846b83220bc3ce
40K     e67cd60207d75c3eb48a9537772ecb2fdc0f36e919c635c0b49f9531c9bdb3a7

각각의 컨테이너가 차지하고 있는 용량이 나오며, 대부분 log 파일이 많은 용량을 차지하고 있다.

2. cron.daily 목록 확인

# cron.daily 확인
$ ls /etc/cron.daily/
apport  apt-compat  bsdmainutils  dpkg  logrotate  man-db  popularity-contest  update-notifier-common

3. logrotate 설정 하기

$ vi /etc/logrotate.d/docker

아래와 같이 설정을 해주면 된다.

/var/lib/docker/containers/*/*.log {
  rotate 3
  daily
  compress
  missingok
  copytruncate
}

- yearly(연단위), monthly(월단위), weekly(주단위), daily(일 단위) : 주기 옵션으로 로테이트 실행 주기
- rotate [숫자] : 로그파일의 개수가 숫자이상이면 가장 오래된 로그파일을 삭제합니다.

   ex) rotate 5 (log파일이 5개 이상 되면 삭제)
- maxage [숫자] : 파일이 지정일 이상되면 삭제

   ex) maxage 30 (log파일이 30일 이상 되면 삭제)
- size [숫자 K,M,G] : 로그 파일이 크기가 설정보다 커지면 로테이트 실행

   ex) size +100k
- create [권한] [유저] [그룹] : 로테이트 될때 생성되는 로그파일 권한 및 소유자 지정

   ex) create 644 root root
- notifempty : 로그 내용이 없으면 로테이트를 실행하지 않음 이와 반대로
- ifempty : 로그 내용이 없어도 로테이트를 진행
- compress : 로테이트로 생성되는 로그파일 gzip으로 압축생성
- nocompress : 로테이트로 생성되는 로그파일을 압축하지 않고 생성
- missingok : 로그파일을 발견하지 못해도 에러처리 하지 않음
- dateext : 로테이트 파일의 이름에 날짜가 들어가도록 생성

 

수동으로 실행해보고 싶으면 아래 명령어를 사용하면 된다.

$ logrotate -fv /etc/logrotate.d/docker

실행 결과는 아래와 같이 생성 된다.

# gz으로 압축 파일이 생성이 되며 log 파일은 새로 생성이 된다.
-rw-r----- 1 root root    0 Feb 28 10:50 33aac3be35570e29fa284cefd60f5ad0980b07c41e75978007bf18fdcb38f5da-json.log
-rw-r----- 1 root root  143 Feb 25 12:43 33aac3be35570e29fa284cefd60f5ad0980b07c41e75978007bf18fdcb38f5da-json.log.1.gz
반응형