ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Docker] image를 삭제하는 방법들!
    Software engineer/Infra 2023. 11. 2. 18:03

    기본문법

    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")

    리눅스 명령어 활용하기

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

    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/

     

    출처

    https://velog.io/@soonbee/docker-image%EB%A5%BC-%EC%82%AD%EC%A0%9C%ED%95%98%EB%8A%94-%EB%8B%A4%EC%96%91%ED%95%9C-%EB%B0%A9%EB%B2%95%EB%93%A4

     

Designed by Tistory.