도커 디스크 정리하는 법|컨테이너 용량 부족 해결하는 5가지 확실한 방법
no space left on device 오류, 원인부터 확실하게 잡아봅니다
- 도커는 컨테이너·이미지·볼륨·빌드 캐시를 자동으로 지우지 않아 디스크가 계속 쌓입니다.
- docker system df로 어디에 용량이 몰려 있는지 먼저 확인하는 게 순서입니다.
- docker system prune은 정지된 컨테이너·댕글링 이미지·빌드 캐시를 한 번에 지웁니다.
- 볼륨은 기본적으로 정리 대상에서 빠지므로 –volumes 옵션을 따로 붙여야 합니다.
- 맥·윈도우 Docker Desktop은 정리해도 가상 디스크 파일 자체는 줄어들지 않을 수 있습니다.
서버 디스크가 꽉 찼다는 알림을 받고 확인해보니, 범인이 도커였던 경험 있으신가요?
이미지를 빌드하고, 컨테이너를 실행하고, 볼륨을 만드는 과정이 반복되면 도커는 눈에 띄지 않게 디스크를 계속 잡아먹습니다.
도커는 기본적으로 “보수적인” 정책을 씁니다. 사용자가 명시적으로 지우라고 하기 전까지는 컨테이너·이미지·볼륨을 알아서 지우지 않습니다.
이 글에서는 도커 디스크 정리가 왜 필요한지부터, 사용량 확인, 안전한 정리 명령어까지 순서대로 정리합니다.
도커 디스크 정리, 왜 필요할까
도커 디스크 정리를 미루면 결국 “no space left on device” 오류를 만나게 됩니다. 이미지 빌드도, 컨테이너 실행도 전부 멈춰버립니다.
공간을 차지하는 주범은 크게 네 가지입니다. 정지된 컨테이너, 태그 없는 댕글링 이미지, 아무 데도 연결되지 않은 볼륨, 그리고 빌드할 때마다 쌓이는 빌드 캐시입니다.
특히 빌드 캐시는 체감하기 어렵습니다. 빌드 속도를 높이기 위해 도커가 의도적으로 남겨두는 데이터라, 인지하지 못한 채 수십 GB씩 쌓이는 경우가 흔합니다.
도커가 데이터를 함부로 지우지 않는 이유는 안전성 때문입니다. 컨테이너를 내렸다고 바로 데이터를 지워버리면, 재시작하려던 사용자는 데이터를 통째로 잃게 됩니다. 그래서 “정리는 사용자가 명시적으로 요청할 때만” 이라는 원칙을 지킵니다.
CI/CD 서버라면 문제가 더 빨리 커집니다. 빌드가 반복될 때마다 이미지 레이어와 캐시가 쌓이기 때문에, 정리 없이는 며칠 안에 디스크가 가득 찰 수 있습니다.
개발 노트북에서도 마찬가지입니다. 여러 프로젝트를 오가며 이미지를 계속 빌드하다 보면 어느새 도커가 50GB 넘게 차지하고 있는 경우가 드물지 않습니다.
docker system df로 도커 디스크 정리 전 사용량 확인하기
무작정 지우기 전에, 어디에 용량이 몰려 있는지부터 확인해야 합니다. docker system df가 이 역할을 합니다.
이 명령어는 이미지·컨테이너·로컬 볼륨·빌드 캐시 네 항목별로 전체 크기와 회수 가능한(RECLAIMABLE) 용량을 표로 보여줍니다.
docker system df -v를 쓰면 더 자세히, 개별 이미지와 컨테이너 단위로 얼마나 차지하는지까지 확인할 수 있습니다.
여기서 RECLAIMABLE 항목이 핵심입니다. 이 숫자가 높을수록 정리했을 때 확보할 수 있는 여유 공간이 크다는 뜻입니다.
정기적으로 용량을 확인하고 싶다면
docker system df를 크론잡이나 모니터링 스크립트에 넣어두세요. 특정 사용률을 넘으면 알림이 오도록 만들면 디스크가 꽉 차기 전에 미리 대응할 수 있습니다.이미지·컨테이너 정리하는 법 – docker system prune
용량이 어디 있는지 확인했다면 이제 정리할 차례입니다. docker system prune이 가장 기본이 되는 명령어입니다.
이 명령어 하나로 정지된 컨테이너, 어떤 컨테이너와도 연결되지 않은 네트워크, 댕글링 이미지, 빌드 캐시가 한 번에 정리됩니다.
실행하면 삭제 대상을 미리 안내하고 확인을 요청합니다. y를 눌러야 실제로 삭제가 진행되므로, 실수로 잘못 지워지는 걸 어느 정도 막아줍니다.
더 강력하게 지우고 싶다면 -a 옵션을 붙입니다. 댕글링 이미지뿐 아니라 어떤 컨테이너도 쓰고 있지 않은 모든 이미지까지 지웁니다.
다만 이 옵션은 신중하게 써야 합니다. 당장 컨테이너로 실행 중이지 않더라도, 나중에 다시 쓸 이미지까지 함께 삭제될 수 있기 때문입니다.
기본
docker system prune은 볼륨을 건드리지 않습니다. 하지만 -a 옵션과 함께 쓰면 예상보다 훨씬 많은 이미지가 삭제될 수 있으니, 실행 전 확인 메시지에 나오는 목록을 반드시 읽어보세요.빌드 캐시·볼륨까지 완전히 정리하는 법
system prune만으로 공간이 크게 줄지 않는다면, 빌드 캐시나 볼륨을 따로 정리해야 할 수 있습니다.
빌드 캐시만 지우고 싶다면 docker builder prune을 씁니다. 특히 CI 서버에서 매 빌드마다 캐시가 쌓이는 경우 이 명령어가 큰 도움이 됩니다.
docker builder prune --filter "until=48h"처럼 시간 필터를 쓰면 최근 캐시는 남기고 오래된 것만 골라 지울 수 있습니다.
볼륨은 기본 prune 대상이 아니므로 docker volume prune을 따로 실행해야 합니다. 다만 볼륨은 실제 데이터가 담겨 있을 가능성이 높아 가장 조심해야 하는 영역입니다.
어떤 볼륨을 지울지 특정하고 싶다면 먼저 docker volume ls로 목록을 확인하고, 이름이 명확한 볼륨만 선택적으로 docker volume rm으로 지우는 게 안전합니다.
맥이나 윈도우의 Docker Desktop을 쓴다면, 정리를 다 해도
df -h에 변화가 없어 당황할 수 있습니다. Docker Desktop은 가상머신 안에 고정 크기 디스크 파일을 두는 구조라, 내부 데이터를 지워도 그 파일 자체는 자동으로 줄어들지 않기 때문입니다. 설정의 Resources → Disk image에서 직접 크기를 줄이거나 리셋해야 합니다.도커 디스크 정리할 때 자주 하는 실수
도커 디스크 정리는 명령어 자체는 간단하지만, 급하게 처리하려다 사고로 이어지는 경우가 많습니다.
첫 번째는 확인 없이 -a --volumes를 습관처럼 붙이는 것입니다. 운영 데이터베이스 볼륨까지 한 번에 날아갈 수 있는 조합이라 특히 조심해야 합니다.
두 번째는 실행 중인 컨테이너가 있는데도 급한 마음에 이미지를 강제로 지우려는 것입니다. 사용 중인 이미지는 prune으로 지워지지 않지만, docker rmi -f는 강제로 지워버릴 수 있습니다.
세 번째는 CI 환경에서 매 빌드 후 docker system prune -a를 그대로 넣는 경우입니다. 캐시까지 전부 날아가 버려 빌드 시간이 오히려 늘어나는 역효과가 납니다.
네 번째는 로그 파일 용량을 놓치는 것입니다. 컨테이너 로그가 계속 쌓이면 도커 리소스와 별개로 디스크를 차지하는데, prune 명령으로는 정리되지 않습니다. 로그 로테이션 설정을 따로 해둬야 합니다.
정리 명령어는 대부분 되돌릴 수 없습니다. 운영 서버라면
docker system df -v로 대상 목록을 확인하고, 정말 필요한 것만 선택적으로 지우는 습관을 들이세요.자주 묻는 질문
아닙니다. 기본 옵션으로는 볼륨이 정리 대상에서 제외됩니다. 볼륨까지 지우려면 –volumes 옵션을 명시적으로 추가해야 합니다.
정해진 주기는 없지만, 개발 환경은 주 1회, CI 서버는 빌드 부담을 고려해 일 단위로 docker system df를 확인하고 필요할 때 정리하는 걸 권장합니다.
Docker Desktop 환경이라면 가상 디스크 파일 자체가 줄어들지 않아서일 수 있습니다. Resources 설정에서 디스크 이미지를 리셋하거나 크기를 조정해야 합니다.
직접적인 초기화 명령은 없지만, 로그 드라이버에 max-size 옵션을 설정하면 일정 크기 이상 쌓이지 않도록 자동으로 로테이션됩니다.
네, 명령어를 실행하면 삭제 대상과 확인 메시지가 먼저 표시됩니다. y를 입력해야 실제로 삭제가 진행되므로 미리 검토할 수 있습니다.
📖 핵심 용어 미니 사전
본문에 나온 용어가 낯설다면 아래에서 먼저 확인해보세요.
정리했을 때 실제로 회수할 수 있는 디스크 용량을 뜻합니다.
이미지 빌드 속도를 높이기 위해 도커가 남겨두는 중간 레이어 데이터입니다.
더 이상 쓰이지 않는 데이터를 자동으로 찾아 정리하는 과정을 뜻합니다.
로그 파일이 일정 크기를 넘으면 자동으로 나눠 관리하는 설정입니다.
🔗 공식 자료
📖 출처
Docker 공식 문서 – docker system df, docker system prune, docker builder prune CLI 레퍼런스를 참고했습니다.
도커 디스크 정리는 무작정 지우기보다 docker system df로 원인부터 확인하는 게 먼저입니다. 컨테이너·이미지는 system prune으로, 볼륨은 따로 신중하게 정리하면 안전하게 용량을 되찾을 수 있습니다.






