빠른 흐름
# 디스크 사용량 확인 후 정리
docker system df
docker system prune정리 흐름
어떤 정리 명령을 먼저 떠올리면 되나
| 상황 | 먼저 떠올릴 선택 |
|---|---|
| 전체 미사용 리소스 정리 | docker system prune |
| dangling 이미지만 정리 | docker image prune |
| 빌드 캐시만 정리 | docker builder prune |
| 볼륨까지 정리 | --volumes를 신중하게 사용 |
| 정리 전 사용량 확인 | docker system df -v |
docker system prune이 dangling 리소스를 정리하는 방식
docker system prune은 중지된 컨테이너, 태그 없는 이미지(dangling), 사용되지 않는 네트워크, 빌드 캐시를 한 번에 제거한다. 실행 중인 컨테이너와 사용 중인 이미지, 볼륨은 건드리지 않는다. -f 플래그로 확인 프롬프트를 생략할 수 있다.
# 정리 전 현황 확인
docker system df
# 정리 대상 미리 보기 (실제 삭제 안 함)
docker system prune --dry-run
# 실제 정리 실행
docker system prune
# 확인 없이 바로 정리 (CI 환경에서 유용)
docker system prune -fdangling image가 쌓이는 이유
같은 이름과 태그로 이미지를 다시 빌드하면 새 이미지가 해당 태그를 가져가고 기존 이미지는 태그를 잃는다. 태그 없이 다이제스트만 남은 이미지를 dangling image라고 한다. 빌드를 반복할수록 계속 쌓이며, docker image ls에서 <none>:<none>으로 표시된다.
# dangling image 목록 확인
docker image ls --filter dangling=true
# dangling image만 정리
docker image prune
# 빌드를 반복하면 쌓이는 <none>:<none> 이미지 예시
# REPOSITORY TAG IMAGE ID SIZE
# <none> <none> abc123... 450MB
# <none> <none> def456... 448MBvolume이 --volumes 없이 prune되지 않는 이유
볼륨에는 DB 데이터, 업로드 파일 같은 영속 데이터가 담길 수 있다. docker system prune이 기본적으로 볼륨을 건드리지 않는 것은 의도적인 데이터 보호 설계다. --volumes 플래그를 명시해야만 미사용 볼륨을 정리한다.
# 볼륨 사용 현황 확인
docker volume ls
# 볼륨 제외하고 정리 (기본)
docker system prune
# 볼륨까지 포함해 정리 (데이터 손실 주의)
docker system prune --volumes
# 볼륨만 따로 정리
docker volume prune디스크 사용량을 확인하고 정리 대상을 판단하는 방법
정리하기 전에 docker system df로 각 유형별 사용량을 확인한다. 어떤 유형이 디스크를 많이 차지하는지 파악하고, 필요한 대상만 선택적으로 정리하는 것이 안전하다.
# 유형별 디스크 사용량
docker system df
# 상세 내역 (이미지, 컨테이너, 볼륨별 목록)
docker system df -v
# 종류별 개별 정리
docker container prune # 중지된 컨테이너만
docker image prune # dangling 이미지만
docker network prune # 미사용 네트워크만
docker volume prune # 미사용 볼륨만 (주의)
docker builder prune # 빌드 캐시만system prune과 개별 prune은 "정리 범위"가 다르다
빠르게 전체를 비우고 싶다면 docker system prune이 편하지만, 어떤 리소스를 없앨지 정확히 알고 있을 때는 개별 prune이 더 안전합니다. 특히 볼륨과 빌드 캐시는 실수 비용이 커서, 전체 prune보다 범위를 좁혀 정리하는 편이 운영에서는 낫습니다.
체크포인트
| 상황 | 적합한 선택 |
|---|---|
| 전체 미사용 리소스 일괄 정리 | docker system prune |
| 볼륨 데이터까지 포함해 정리 | docker system prune --volumes (주의) |
| dangling 이미지만 정리 | docker image prune |
| 빌드 캐시가 디스크를 많이 쓸 때 | docker builder prune |
| 정리 전 현황 파악 | docker system df -v |
주의할 점
--volumes 플래그는 사용 중이지 않은 모든 볼륨을 삭제하며 복구가 불가능하다. 특히 DB 데이터를 볼륨에 저장한 경우, 컨테이너가 중지 상태라도 볼륨은 "사용 중이지 않음"으로 간주될 수 있다. 반드시 docker volume ls로 삭제 대상을 확인한 뒤 실행해야 한다.
docker compose down
docker system prune --volumes
# 중지된 DB 컨테이너가 붙잡고 있던 named volume까지 날아가면
# 데이터가 복구되지 않음참고 링크
1 sources