본문 바로가기
etc

Docker 로그로 가득 찬 디스크 정리 기록

by abstract.jiin 2025. 7. 21.

개발 환경에서 mkdir: cannot create direcry ... No space left on device 에러 발생 시 디스크 용량 점검부터 Docker 로그 정리까지 수행한 절차


1. 디스크 용량 확인

df -h

→ /dev/vda1 사용률이 100%로 확인됨. 주로 /var 아래가 문제인 경우가 많음.


2. /var 디렉토리 용량 분석

sudo du -sh /* 2>/dev/null | sort -hr | head -n 10
sudo du -sh /var/* | sort -hr | head -n 10

→ /var/lib가 대부분을 차지하고 있었음 (91GB)


3. /var/lib/docker 세부 분석

sudo du -sh /var/lib/docker/*

초기에 Permission denied 에러 발생했으므로 다음과 같이 실행:

sudo bash -c 'du -sh /var/lib/docker/* | sort -hr | head -n 20'

→ /var/lib/docker/containers 가 85GB 로 압도적


4. Docker 로그 파일만 삭제

Docker 컨테이너 로그는 기본적으로 json-file 형식으로 저장됨:

/var/lib/docker/containers/<container-id>/<container-id>-json.log

모든 컨테이너 로그 파일 일괄 삭제:

sudo find /var/lib/docker/containers/ -name '*-json.log' -type f -delete


5. 용량 재확인

sudo bash -c 'du -sh /var/lib/docker/* | sort -hr | head -n 20'
df -h

→ /var/lib/docker/containers 가 436KB로 줄어들고, 전체 디스크 용량도 회복됨


6. Docker 로그 재발 방지 설정

로그 파일 크기 제한 및 순환 설정:

sudo vi /etc/docker/daemon.json
{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}

설정 반영:

sudo systemctl restart docker

결론

  • docker system prune -a --volumes 로 전체 정리도 가능(신중)
  • 단순 로그 정리만으로도 수십 GB의 디스크 공간을 확보 가능

그 외, prune 명령어

docker system df       # 어떤 게 얼마나 쓰는지 확인
docker container prune # 중지된 컨테이너 삭제
docker image prune -a  # 안 쓰는 이미지 전부 삭제
docker volume prune    # 안 쓰는 볼륨 삭제
docker network prune   # 안 쓰는 네트워크 삭제