Docker
운영 중 이미지 용량 문제가 생기는 원인 찾기
Docker 환경에서 이미지 용량이 갑자기 커지거나 로그가 쌓이면, 파일 시스템부터 확인해야 한다.
운영 중 문제를 크게 잡으면 모든 파일이 의심스러워진다. 하지만 체계적으로 접근하면 이미지 용량 문제도 빠르게 해결할 수 있다.
현재 상태 확인
가장 먼저 Docker 컨테이너의 현재 상태를 본다:
docker ps
docker ps -a # 정지된 컨테이너 포함
Exited 상태의 컨테이너가 많으면 저장 공간을 낭비한다. 정지된 컨테이너를 제거하면 공간을 확보할 수 있다.
로그 확인
각 컨테이너의 로그 크기를 확인한다:
docker logs --tail=100 service-name
du -sh /var/lib/docker/containers/*/
Containerd 로그가 너무 커지면 디스크를 빠르게 채운다. 로그 로테이션 설정을 확인하고, 필요하면 로그를 정리한다.
상세 정보 확인
컨테이너의 자세한 정보를 확인한다:
docker inspect service-name
JSON 출력에서 다음을 확인한다:
Mounts: 마운트된 볼륨이 무엇인가? 클라우드 스토리지나 NAS가 연결되어 있는가?Image: 사용 중인 이미지 ID와 태그State: 실행 중인 프로세스 상태
원인을 나누는 기준
이미지 용량 증가의 원인은 보통 다음 중 하나다:
- 로그 파일: 디버그 로그가 계속 쌓이고 있는가?
- 임시 파일: 캐시나 임시 데이터가 정리되지 않고 있는가?
- 데이터베이스 파일: 데이터가 계속 추가되면서 파일이 커지는가?
- 이미지 레이어: 새 이미지를 자주 배포하면서 이전 이미지가 정리되지 않았는가?
바로 확인할 값들
가장 큰 파일들을 찾는다:
du -sh /var/lib/docker/
du -sh /var/lib/docker/containers/*/
du -sh /var/lib/docker/volumes/*/
Docker 데이터 디렉토리가 얼마나 큰지, 어느 부분이 가장 큰지 파악한다. 특정 컨테이너나 볼륨이 비정상적으로 크면, 그 부분부터 조사한다.
결과를 해석하는 법
각 부분의 용량에 따라 대응한다:
- 컨테이너 디렉토리가 크면: 실행 중인 컨테이너의 쓰기 레이어가 크다. 불필요한 파일을 정리하거나 볼륨을 재설정한다.
- 이미지 디렉토리가 크면: 과거 이미지들이 정리되지 않았다.
docker image prune으로 정리한다. - 볼륨 디렉토리가 크면: 실제 데이터가 계속 증가하고 있다. 저장소 용량을 확인하거나 오래된 데이터를 아카이빙한다.
마치기
한 번에 여러 설정을 바꾸지 않는 것만으로도 원인 추적이 쉬워진다. 각 파일이나 볼륨의 용량을 기록해두면, 다음에 비슷한 문제가 나올 때 참고할 수 있다.