Docker 로그 관리
도커(docker)는 로깅 드라이버(logging driver) 통해, 로그를 남기게 되어 있습니다.
로깅 드라이버의 기본 값을 json-file
입니다. 즉, 로그를 json 형식으로 파일로 저장하게 됩니다.
아래 명령어를 실행하면, 해당 도커의 로깅 드라이버가 뭔지 알 수 있습니다.
$ docker info --format ''
json-file
json-file
로깅 드라이버를 사용하는 경우, 시간이 지날 수록 로그 파일이 쌓이기 때문에 주기적으로 파일을 삭제해줘야합니다.
주기적으로 파일을 삭제하는 방법은, 도커 데몬의 설정을 변경하거나, logrotate
를 이용하는 것입니다.
도커 데몬 설정 파일 변경하기
/etc/docker/
디렉토리에 있는 daemon.json
파일에 아래와 같은 내용을 추가해 주면 됩니다.
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
도커 재시작하면 변경 사항이 반영됩니다.
logrotate 이용하기
logrotate
는 로그를 관리하기 위해 사용되는 범용툴입니다. 서버에 설치가 안되어 있다면, 설치가 필요합니다.
아래와 같이 컨테이너 로그를 정리하는 설정 파일을 추가해 주면 됩니다.
cat > /etc/logrotate.d/container << EOF
/var/lib/docker/containers/*/*.log {
rotate 100
copytruncate
missingok
notifempty
compress
maxsize 100M
maxage 30
daily
dateext
dateformat -%Y%m%d-%s
create 0644 root root
}
EOF