도커 운영 중, 호스트 머신의 스토리지가 가득찼을 때


현상

docker storage를 충분한 크기로 적절히 설정하고 운영함에도 host 머신의 스토리지가 full 되는 경우가 있다.

# df Filesystem Size Used Avail Use% Mounted on /dev/vda1 10G 3.9G 6.2G 39% / /dev/vdc1 10G 10G 0 100% /var /dev/vdd1 100G 7.5G 93G 8% /home ...


설명

  • /var/lib/docker/containers/ 디렉토리 아래, <container-id>/<container-id>-json.log 파일이 스토리지를 모두 차지했을 수 있다
  • 이 파일은 도커가 docker logs 명령 실행시 출력할 로그를 저장하는 파일이다 (docker storage에 저장되지 않고 host 머신의 파일 시스템을 소진한다)
  • 도커 실행시 max-size 옵션을 설정하면 로그 파일의 크기를 제한할 수 있다
  • 도커 실행시 max-file 옵션을 설정하면 로그 파일의 개수를 제한할 수 있다 (log rotate 효과)

해법

$ sudo vi /etc/docker/daemon.json
...다음 내용 추가...
{
  "log-driver": "json-file",
  "log-opts": {
    "mode": "non-blocking",
    "max-size": "4m",
    "max-file": "3"
  }
}

$ sudo systemctl restart docker

Ref


Posted by ingeeC
,