Haru Utils

DOCKER STORAGE

Docker 디스크와 컨테이너 로그가 커질 때

이미지·컨테이너·볼륨·빌드 캐시와 로그를 구분하고 데이터 소유자를 확인한 뒤 필요한 대상만 정리합니다.
Docker disk full/var/lib/dockerjson-file logdocker system dfno space left
환경Docker Engine on Linux · rootful 기준
분류컨테이너
검토일2026-08-27
진행5단계 · 조회 우선

SAFE OPERATING BOUNDARY

중단·복구 기준부터 확인하세요

STOP CONDITIONS

여기서는 멈추세요

  • 명령 출력의 서버·서비스·경로가 예상 대상과 다르면 변경 단계로 넘어가지 않습니다.
  • 현재 접속 세션, 백업 또는 콘솔 복구 경로를 확보하지 못했다면 상태 변경 명령을 실행하지 않습니다.
ROLLBACK

복구 기준

변경 전 설정과 출력값을 기록하고, 예상과 다른 결과가 나오면 추가 변경을 멈춘 뒤 승인된 운영 복구 절차로 되돌립니다.

ESCALATION PACK

담당자에게 전달할 자료

  • 장애 발생 시각·정상화 시각과 원문 오류 메시지
  • 민감정보를 제거한 조회 명령 출력과 변경 전후 차이
  • 조치 후 동일 조건으로 수행한 재검증 결과
공식 문서와 읽기 전용 진단 명령을 우선 검토했습니다. 실제 서버에서는 설치된 버전의 --help와 man을 함께 확인하세요.

BEFORE YOU START

이런 증상에서 시작합니다

  • /var/lib/docker 용량 증가
  • 컨테이너 로그 파일 급증
  • 이미지 pull 실패
  • no space left on device

CHECK THE BRANCH

놓치기 쉬운 원인 분기

01

이미지·빌드 캐시

다시 받을 수 있는 데이터처럼 보여도 현재 배포와 롤백에 필요한 태그인지 확인합니다.

02

볼륨

DB·업로드 파일 등 영구 데이터일 수 있으므로 일괄 prune 대상에 포함하지 않습니다.

03

json-file 로그

Docker daemon 전용 파일을 직접 수정하지 않고 max-size·max-file 회전 정책을 새 컨테이너에 적용합니다.

FOLLOW THE FLOW

순서대로 확인하기

1
조회시스템을 변경하지 않는 확인 단계

Docker 저장공간을 유형별로 확인

호스트 전체 용량과 Docker가 계산한 사용량을 함께 봅니다.

Docker 상세 사용량
docker system df -v
Docker 경로 파일시스템
df -hT /var/lib/docker
결과 읽기

RECLAIMABLE은 삭제 가능성을 뜻할 뿐 즉시 삭제해도 된다는 의미가 아닙니다.

다음 판단

가장 큰 유형과 운영 소유자를 기록합니다.

2
조회시스템을 변경하지 않는 확인 단계

컨테이너 쓰기 계층과 로그 경로 확인

CONTAINER_NAME을 실제 컨테이너로 바꿉니다.

컨테이너 쓰기 크기
docker ps -a --size --format 'table {{.Names}}\t{{.Status}}\t{{.Size}}'
로그 경로
docker inspect --format '{{.LogPath}}' CONTAINER_NAME
로그 설정
docker inspect --format '{{json .HostConfig.LogConfig}}' CONTAINER_NAME
결과 읽기

컨테이너 writable layer와 로그 증가는 원인과 정리 방법이 다릅니다.

다음 판단

로그가 원인이면 애플리케이션 출력량과 회전 정책을 함께 확인합니다.

3
조회시스템을 변경하지 않는 확인 단계

볼륨의 실제 사용 주체 확인

이름 없는 볼륨도 데이터일 수 있으므로 연결 컨테이너를 먼저 찾습니다.

볼륨 목록
docker volume ls
볼륨 상세
docker volume inspect VOLUME_NAME
볼륨을 참조하는 컨테이너
docker ps -a --filter volume=VOLUME_NAME --format '{{.Names}} {{.Status}}'
결과 읽기

연결 컨테이너가 없더라도 백업·이전 배포 데이터일 수 있습니다.

다음 판단

서비스 소유자와 보존 여부를 확인하기 전에는 삭제하지 않습니다.

4
주의서버 부하나 권한을 고려할 단계

로그 회전 적용 범위 확인

daemon 기본값 변경은 기존 컨테이너에 자동 적용되지 않습니다.

daemon 기본 로그 드라이버
docker info --format '{{.LoggingDriver}}'
daemon 설정 확인
sudo sed -n '1,200p' /etc/docker/daemon.json
결과 읽기

json-file에 max-size가 없으면 파일 크기가 제한되지 않을 수 있습니다. 설정값은 JSON 문자열 형식이어야 합니다.

다음 판단

설정 변경 전에 daemon.json 문법과 컨테이너 재생성 계획을 준비합니다.

5
변경데이터·서비스 상태가 달라질 수 있는 단계

확인된 대상만 정리하고 회전 정책 검증

docker system prune과 --volumes는 사용하지 않습니다. 아래 명령도 삭제 목록을 확인하고 프롬프트에 동의한 경우만 진행합니다.

변경 단계입니다. 실행 전 대상 이름과 경로, 서비스 중단 영향, 복구 방법을 다시 확인하세요.
7일보다 오래된 dangling 이미지 후보 정리
docker image prune --filter 'until=168h'
대화형 삭제 목록을 확인합니다.
정리 후 사용량
docker system df -v
새 컨테이너 로그 설정 확인
docker inspect --format '{{json .HostConfig.LogConfig}}' CONTAINER_NAME
결과 읽기

필요한 이미지·컨테이너·볼륨이 유지되고 호스트 Use%가 낮아졌는지 확인합니다.

다음 판단

재발 방지는 애플리케이션 로그 수준과 max-size·max-file 정책으로 해결합니다.

PRIMARY REFERENCES

공식 문서

배포판과 버전에 따라 옵션·로그 위치가 다를 수 있습니다. 실행 전 서버의 --help와 로컬 매뉴얼을 함께 확인하세요.

도구 빠른 검색

최근 사용한 도구를 다시 열거나, 이름과 기능으로 검색하세요.

검색어와 도구의 입력·결과는 저장하지 않습니다.

↑↓ 이동 · Enter 열기 · Esc 닫기