Docker 로그 로테이션 설정, 잊지 마세요!
Docker는 기본적으로 로그 로테이션을 지원하지 않아, 컨테이너 로그가 무한정 증가하여 디스크 공간 부족 문제(Disk Space Exhaustion)를 야기함
`docker inspect` 명령어를 통해 로그 설정을 확인하고, `/etc/docker/daemon.json` 파일에 로그 드라이버(Log Driver) 및 최대 파일 크기(Max Size)를 설정하여 해결
journald를 활용하여 로그를 관리하는 방법이 제시되었으며, 메모리 기반의 로그 버퍼(Log Buffer)를 사용하여 디스크 I/O 부하를 줄이는 방법 제안
`log-driver: local` 설정을 통해 로그 로테이션과 압축을 자동으로 수행하는 방법도 소개되었으며, 중앙 집중형 로깅(Centralized Logging)의 중요성 강조
Docker 로그 로테이션 부재의 문제점
게시자는 Docker의 기본 로그 설정 부재로 인해 디스크 공간 부족 문제를 겪었다고 밝힌다. 특히, Docker는 기본적으로 로그 로테이션을 지원하지 않아, 컨테이너가 실행되는 동안 로그 파일이 지속적으로 증가하여 디스크 공간을 모두 소모할 수 있다. 이러한 문제는 서버 운영에 치명적인 영향을 미칠 수 있으며, 장애 발생(Incident)의 원인이 될 수 있다.
Docker 로그 설정 방법 및 해결책
게시자는 `docker inspect` 명령어를 사용하여 컨테이너의 로그 설정을 확인하고, `/etc/docker/daemon.json` 파일에 로그 드라이버(Log Driver)와 최대 파일 크기(Max Size)를 설정하여 문제를 해결하는 방법을 제시한다. 구체적으로, `json-file` 드라이버를 사용하고, `max-size`와 `max-file` 옵션을 설정하여 로그 파일의 크기를 제한하고, 로테이션을 수행하도록 구성한다. 이 설정을 적용하기 위해서는 Docker 데몬을 재시작하고, 기존 컨테이너를 재실행해야 한다.
journald를 활용한 로그 관리
커뮤니티에서는 journald를 활용한 로그 관리 방법이 제시되었다. journald는 시스템 로그를 관리하는 데 사용되는 시스템 서비스로, 메모리 기반의 로그 버퍼를 사용하여 디스크 I/O 부하를 줄일 수 있다. 또한, journald는 로그를 중앙 집중화하여 관리할 수 있으며, 웹 인터페이스를 통해 로그를 쉽게 확인할 수 있다. 중앙 집중형 로깅(Centralized Logging)은 여러 서버의 로그를 통합하여 분석하고, 문제 발생 시 빠르게 대응할 수 있도록 돕는다.
log-driver: local을 활용한 자동 로테이션
댓글에서는 `log-driver: local` 설정을 통해 로그 로테이션과 압축을 자동으로 수행하는 방법이 소개되었다. 이 설정을 사용하면 별도의 설정 없이 로그 파일의 크기를 제한하고, 오래된 로그 파일을 자동으로 압축하여 디스크 공간을 효율적으로 관리할 수 있다. 이는 Docker 로그 관리의 편의성을 높이는 방법으로, 운영 효율성(Operational Efficiency)을 향상시키는 데 기여한다.