개발운영(DevOps & Infra)/도커(Docker)

디스크 잡아먹는 도커 댕글링(Dangling) 이미지

로그몽 2025. 12. 27. 15:12

 

최근 도커(Docker) 기반 서비스에서 연결이 끊기거나 응답이 없는 문제가 발생하였습니다.

확인해 보니 디스크 용량이 거의 차 있었고, 그 원인은 댕글링 이미지였습니다.

 

이 글에서는 도커에서 발생한 댕글링 이미지로 인한 디스크 부족 문제를 어떻게 확인하고 해결했는지에 대한 기록입니다.

✔️ 댕글링 이미지가 무엇인지
✔️ 왜 생기는지
✔️ 어떻게 관리/정리하는지

 

1. 댕글링(Dangling) 이미지란?

태그(tag)를 잃어버린 이미지, 즉 “어떤 이름도 가리키지 않는 이미지”를 말합니다.

docker images 명령을 실행하면 TAG 컬럼에 <none>으로 확인되는 이미지가 바로 댕글링 이미지입니다.

겉보기엔 쓰이지 않는 이미지처럼 보이지만, 이미지 레이어 자체는 디스크에 그대로 남아 있어 공간을 차지하게 됩니다.

 

2. 댕글링 이미지가 생기는 과정

(1) latest 태그로 pull 받을 때

  1. 도커 허브에서 이미지(A)를 태그(tag) 없이 pull → 자동으로 latest 태그(tag)가 붙습니다.
  2. 이후 동일한 이미지가 새로 빌드/배포되어 다시 pull 받습니다. (이미지 B)
  3. 새 이미지(B)에 latest가 붙고, 기존 이미지(A)는 태그(tag)가 사라집니다.

태그를 잃은 기존 이미지(A) = 댕글링 이미지입니다.

(2) 이미 사용 중인 이미지를 강제 삭제할 때

보통은 1) 컨테이너 삭제 2) 이미지 삭제 이 순서로 진행해야 합니다.

하지만 docker rmi -f <IMAGE_ID> 명령어로 강제 삭제 시 이미지 레이어를 완전히 제거하지 못하고, 이름만 사라져서 <none> 상태로 남을 수 있습니다.

 

3. 해결 방법 (댕글링 이미지 관리 & 정리)

(1) 버전 태그(tag)로 이미지 pull 받기

이미지를 pull 받을 때는 가능하면 태그(tag)를 함께 쓰는 것이 좋습니다.

docker pull nginx:1.27
 

태그(tag)를 사용하면 댕글링 이미지 생성은 막을 수 있지만,

이전 버전 이미지가 계속 쌓여 디스크를 차지하는 문제는 여전히 존재하게 됩니다.

(2) 주기적으로 댕글링 이미지 정리

댕글링 이미지만 정리하려면, 아래의 명령어를 사용하면 됩니다.

docker image prune

(3) 스크립트로 자동 정리(추천 ⭐)

이미지 pull 받고 댕글링 이미지를 정리하는 sh 스크립트를 생성하여 이미지를 자동으로 정리할 수 있습니다.

  • pull + 댕글링 이미지 정리
#!/usr/bin/env bash
docker pull "$1" && docker image prune -f
  • sh 스크립트 사용
./pull_clean.sh nginx:1.27