Dangling Image 한번에 제거하기
docker build 를 하다가 중간에 생기는 Docker 이미지들이 있다. 빌드에 성공하면 생기지 않는데 실패할 경우에 하나씩 생기며, 또는 동일한 태그로 빌드에 성공할 경우 기존에 되어 있던 태깅이 해제되며 생긴다. Dangling Image 라고 불리는 이 쓸모없는 녀석들은 Docker 작업을 빈번하게 하면 많이 생겨난다.
기능 테스트 하며 생긴 쓸모 없는 5개의 Docker Dangling Image
REPOSITORY TAG IMAGE ID CREATED SIZE
test latest 0fa19da6f112 35 hours ago 1.05GB
<none> <none> 0f590461bd53 35 hours ago 657MB
<none> <none> 5317290461c6 43 hours ago 618MB
<none> <none> 197814ec17c6 43 hours ago 618MB
<none> <none> 4170d50c17c6 47 hours ago 441MB
<none> <none> 92772bec17c6 48 hours ago 312MB
ubuntu bionic 94e814e2efa8 13 days ago 88.9MB
gotify/server latest 5ed6ad40184c 2 weeks ago 34.9MB
nginx/nginx-prometheus-exporter 0.3.0 95c4a6806905 6 weeks ago 15.2MB
gitea/gitea 1.7 9f2a1b9f6d26 7 weeks ago 85.6MB
photoprism/photoprism latest bd746a933b76 3 months ago 520MB
prom/node-exporter latest b3e7f67a1480 3 months ago 21MB
alpeware/chrome-headless-trunk rev-604869 f32be082c185 4 months ago 856MB
gitea/gitea 1.6 a4f1704dbaad 5 months ago 77.2MB
fluent/fluentd v1.2 8cd78b7f671b 5 months ago 36.8MB
한 번에 지워보자!
docker images -f dangling=true | awk 'NR > 1 { print $3 }' | xargs -I{} docker rmi {}
dangling 컨테이너들의 목록만 조회한 후, IMAGE ID 만을 필터링 한 후에(awk) 각각의(xargs) 이미지를 지워주면 된다.
비슷하게 종료된 컨테이너들만 지워주는 명령은 다음처럼 할 수 있다.
docker ps -a -f status=exited | awk 'NR > 1 { print $1 }' | xargs -I{} docker rm {}
종료된 상태의 컨테이너만을 조회한 후, Container ID 만을 필터링 한 후에 각각의 컨테이너를 지워주면 된다.