docker image를 삭제하는 다양한 방법들

soonbee·2020년 6월 7일
0

기본문법

1) image id를 이용하여 삭제

docker rmi IMAGE_ID

2) repository와 tag를 이용하여 삭제

docker rmi REPOSITORY:TAG

docker images 명령어 활용하기

docker images 명령어에 -q /--quiet 옵션을 사용하면 이미지의 id만 출력이 된다.
이를 이미지 삭제 명령어에 응용할 수 있다.

1) repository 혹은 tag가 <none> 인 이미지 삭제하기

docker rmi $(docker images -q --filter "dangling=true")

2) 패턴 활용하기

docker rmi $(docker images -q --filter "reference=ngi*")
docker rmi $(docker images -q --filter "reference=docker/*")
docker rmi $(docker images -q --filter "reference=docker/*:1.*")

3) 특정 이미지를 기준으로 생성된지 오래된 이미지들 삭제 (기준이 되는 이미지는 미포함)

주의! docker image를 내 로컬에 pull 받은 날짜가 기준이 아니다

docker rmi $(docker images -q --filter "before=IMAGE_ID")

4) 특정 이미지를 기준으로 보다 최신인 이미지들 삭제 (기준이 되는 이미지는 미포함)

주의! docker image를 내 로컬에 pull 받은 날짜가 기준이 아니다

docker rmi $(docker images -q --filter "since=IMAGE_ID")

리눅스 명령어 활용하기

리눅스 명령어 grepawk 를 활용하는 것도 좋은 방법이다.

1) 특정 키워드가 포함된 이미지 삭제하기

docker rmi $(docker images | grep "KEYWORD" | awk '{print $3}')

이 경우 repository, tag 등 종류를 가리지 않고 키워드가 포함되면 삭제시켜 버린다. 그래서 아래 예시처럼 사용하면 3일 전에 생성된 이미지들만 삭제하는 것도 가능하다.

docker rmi $(docker images | grep "3 days ago" | awk '{print $3}')

유용하고 강력한 기능이지만 원하지 않는 방향으로 삭제가 이루어지기도 한다. 예들 들어 abc 라는 키워드가 tag에 포함된 이미지를 삭제하고 싶은데, repository에 abc가 포함된 이미지들도 삭제가 되어 버린다. 이런 경우 docker images 명령어의 --format 옵션을 활용하면 좋다.

2-1) 특정 키워드가 repository에 포함된 이미지 삭제하기

docker rmi $(docker images --format "{{.ID}} {{.Repository}}" | grep "KEYWORD" | awk '{print $1}')

2-2) 특정 키워드가 tag에 포함된 이미지 삭제하기

docker rmi $(docker images --format "{{.ID}} {{.Tag}}" | grep "KEYWORD" | awk '{print $1}')

--format 에 사용가능한 키값
{{.ID}} {{.Repository}} {{.Tag}} {{.Digest}} {{.CreatedSince}} {{.CreateAt}} {{.Size}}

3) 정규식 활용

egrep을 활용하면 정규식을 통해 필터링하여 삭제할 수 있다.

docker rmi $(docker images | egrep "ngi.x" | awk '{print $3}')
docker rmi $(docker images --format "{{.ID}} {{.Tag}}" | egrep "v1*" | awk '{print $3}')

참조

https://docs.docker.com/engine/reference/commandline/images/

https://docs.docker.com/engine/reference/commandline/rmi/

1개의 댓글

comment-user-thumbnail
2023년 2월 22일

안녕하세요 운영자님
인카토스입니다.
먼저, 댓글로 인사를 드리게 된 점 양해 부탁 드립니다.
이렇게 연락 드린 이유는 이번에 저희가 제작한 도커 각티슈케이스 제품 협찬을 제안드리고 싶어서 연락 드렸습니다.
개발자들에게 많은 사랑은 받은 각티슈케이스입니다.
저희 상품 블로그 포스팅이 가능하실지 여쭙고자 연락드렸습니다.
아니면 클리앙,서버포럼, okky,2cpu,그누보드 등 가입되어 있으신 개발자 커뮤니티가 있으시다면 해당 커뮤니티에 아래와 비슷하게 게시글을 올려주실수 있을까요?

클리앙 : https://www.clien.net/service/board/park/17797443

연락드릴수 있는방법이 댓글밖에 보이지 않아 이렇게 먼저 연락드립니다.

협찬제안에 긍정적인 검토 부탁드리고 제안이 마음에 드신다면 하기 메일로 메일주시면 제품 보내드리도록 하겠습니다.

sungjh0726@naver.com

협찬제품 링크 : https://incatos.shop/surl/P/11

답글 달기