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
'프로그래밍 개발(Development) > Docker' 카테고리의 다른 글
Docker Private(local) Registry 구축하기(ubuntu 20.04) (2) | 2022.06.09 |
---|---|
RUN, CMD, ENTRYPOINT 명령어의 개념과 차이점 (1) | 2022.05.09 |
Docker, Docker-compose 수동 설치(Centos, ubuntu) (0) | 2022.02.23 |
Docker 명령어 정리 (0) | 2021.08.16 |
Django & Nginx를 도커(Docker)로 실행하기 (with. docker-compose) (0) | 2021.08.12 |