본문 바로가기

Docker

호스트 디스크 용량이 갑자기 부족한 경우

728x90

서론

저희가 유지보수를 하는 고객사 시스템은 대부분 AWS EC2 인스턴스에서 Docker를 기반으로 구축되어 구동되고 있습니다.

간혹 디스크 용량이 100%에 임박하는 경우가 발생하는데 저희 서비스는 파일을 S3에서 관리하도록 개발되기 때문에 디스크 용량이 부족할 수가 없는 경우라 난감한 경우가 있었습니다.

 

원인

원인 분석 결과 Docker에서 구동중인 컨테이너에서 발생한 로그가 제한(max-size) 없이 계속 쌓이다 보니 디스크 용량을 지속적으로 갉아먹고 있던 문제였고, 다른 서비스 또한 시간이 지나면 같은 문제를 만날 수 밖에 없는 상황이었습니다.

 

결론

결론적으로 개별 컨테이너에 로그 용량 제한을 걸면 되는데요. 해결방법은 아주 단순합니다.

적용 즉시 max-size를 초과하는 모든 로그가 삭제되며, 언제 그랬냐는 듯이 쾌적한 환경으로 돌변합니다 :)

 

  • 포테이너(Portainer)를 사용하는 경우

Command & logging 탭의 가장 하단 Options에 max-size=100m 와 같이 최대 로그 용량 제한을 기재합니다.

Portainer에서 최대 로그 사이즈 제한 걸기

 

  • Docker Compose를 사용하는 경우

docker-compose.yml 파일의 logging 옵션을 다음과 같이 지정합니다.

services:
    service_name:        
        logging:
            driver: "json-file"
            options:
                max-size: "100m"

 

마치며

앞으로는 어떠한 컨테이너든 생성 시 로그 제한을 거는 강박이 생겼습니다 :)

728x90