만자의 개발일지

[Docker] 댕글링(dangling) 이미지란? 본문

Docker

[Docker] 댕글링(dangling) 이미지란?

박만자 2022. 2. 24. 14:56

댕글링(dangling) 이미지

현재 test라는 이름의 이미지가 존재하고 해당 이미지를 사용하는 컨테이너가 존재합니다.

이미지를 사용중인 컨테이너가 존재할 때 docker rmi 명령어로 이미지를 지우려 하면 다음과 같은 에러가 뜹니다.

$ docker rmi test
Error response from daemon: conflict: unable to remove repository reference "test" (must force) - container 8bd39093b5cf is using its referenced image 83f310aba04a

이미지를 사용 중인 컨테이너가 존재하므로 해당 이미지를 삭제할 수 없다는 내용입니다.

보통의 경우 컨테이너를 먼저 삭제한 후 이미지를 삭제합니다. 이 경우 이미지 레이어 파일까지 삭제되는데, 이미지를 사용중인 컨테이너가 있는 상황에서 -f 옵션을 추가해 이미지를 강제로 삭제하게 되면 이미지 레이어 파일을 실제로 삭제하지 않고 이미지 이름만 삭제하게 됩니다. 이를 댕글링(dangling) 이미지 라고 부릅니다. 

 

docker rmi -f 명령어로 이미지를 강제로 삭제해보도록 하겠습니다.

$ docker rmi -f test
Untagged: test:latest

 

docker images 명령어로 이미지의 상태를 확인해보도록 하겠습니다.

$ docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
<none>       <none>    83f310aba04a   4 hours ago   910MB

이처럼 컨테이너가 사용 중인 이미지를 강제로 삭제하면 이미지의 이름이 <none>으로 변겅되며, 이를 댕글링 이미지라 부릅니다.

 

댕글링 이미지는 다음과 같은 명령어를 사용해 별도로 확인할 수 있습니다.

$ docker images -f dangling=true
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
<none>       <none>    83f310aba04a   4 hours ago   910MB

 

다음과 같은 명령어를 통해 사용 중이지 않은 댕글링 이미지를 한꺼번에 삭제할 수 있습니다.

$ docker image prune
WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N] Y
Deleted Images:
deleted: sha256:83f310aba04af4d4850a6d9cdc180545d61c7adbc95d2370b2ce771b76b4afeb

Total reclaimed space: 0B

 

Comments