[Docker] Dangling Image란? (Build 후 Repository:Tag 가 none 인 경우)

Dangling Images #

  • Image를 사용중인 Container가 존재할 때 아래와 같이 docker rmi 명령어로 Image를 지우려 하면 다음과 같은 에러가 뜬다.

    1docker rmi test
    2
    3Error response from daemon: conflict: unable to remove repository reference "test" (must force) - container 8bd39093b5cf is using its referenced image 83f310aba04a
  • Image를 사용 중인 Container가 존재하므로 해당 Image를 삭제할 수 없다는 내용이다.

  • 보통의 경우 Container를 먼저 삭제한 후 Image를 삭제한다.

  • 이 경우 Image Layer 파일까지 삭제되는데, Image를 사용중인 Container가 있는 상황에서 -f 옵션을 추가해 Image를 강제로 삭제하게 되면 Image Layer 파일을 실제로 삭제하지 않고 Image 이름만 삭제하게 된다.

  • 이를 Dangling Image 라고 부른다.

docker rmi -f 명령어로 Image를 강제로 삭제 #

1docker rmi -f test
2
3Untagged: test:latest

docker images 명령어로 Image의 상태를 확인 #

1docker images
2
3REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
4<none>       <none>    83f310aba04a   4 hours ago   910MB
  • 이처럼 Container가 사용 중인 Image를 강제로 삭제하면 Image의 이름이 으로 변겅되며, 이를 Dangling Image라 부른다.

  • Dangling Image는 다음과 같은 명령어를 사용해 별도로 확인할 수 있다.

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

Solution 1. docker system prune #

  • [OPTIONS] --a, -a : dangling된 것 뿐만 아니라, 모든 사용하지않는 Container 종료 및 Image 삭제

    1docker system prune [OPTIONS]

Solution 2. docker image prune #

  • Dangling Image 삭제

    1docker image prune

Solution 3. dangling images 전부 삭제 #

1docker rmi $(docker images --filter "dangling=true" -q --no-trunc)
1docker images
2REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
3gitea/gitea   latest    203b931e8dab   6 weeks ago     148MB
4ubuntu        20.04     ba6acccedd29   2 months ago    72.8MB
5mariadb       10.4.11   bc20d5f8d0fe   23 months ago   355MB

Solution 4. dangling image에 Repository Name 과 Tag를 정한 후 삭제 #

1docker tag 83ac flaskapi:v0.1
1docker images
2REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
3flaskapi      v0.1      83ac5b135a68   2 hours ago     105MB
4gitea/gitea   latest    203b931e8dab   6 weeks ago     148MB
5ubuntu        20.04     ba6acccedd29   2 months ago    72.8MB
6mariadb       10.4.11   bc20d5f8d0fe   23 months ago   355MB
1docker rmi flaskapi:v0.1

Solution 5. Repo와 Tag가 인 Image들 전부 삭제 #

1docker rmi $(docker images -a|grep "<none>"|awk '$1=="<none>" {print $3}')
Advertisement