개발관련/other

오래되고 사용되지 않는 Docker 이미지를 제거하는 방법

Rateye 2021. 9. 29. 10:26
728x90
반응형
질문 : 오래되고 사용되지 않는 Docker 이미지를 제거하는 방법

Docker를 오랫동안 실행하면 시스템에 많은 이미지가 있습니다. 사용하지 않는 모든 Docker 이미지를 한 번에 안전하게 제거하여 스토리지를 확보하려면 어떻게해야합니까?

TAG 가있는 몇 달 전에 가져온 이미지도 제거하고 싶습니다.

따라서 태그가없는 이미지 만 제거하도록 요청하는 것이 아닙니다. TAG 몇 달 전에 가져온 다른 이미지를 모두 포함하는 일반적인 사용하지 않는 이미지를 제거하는 방법을 찾고 있습니다.

답변

2016 년 9 월 업데이트 : Docker 1.13 : PR 26108커밋 86de7c0 은 docker 데몬 데이터가 디스크에서 차지하는 공간을 시각화하고 "불필요한"초과분을 쉽게 정리할 수 있도록 도와주는 몇 가지 새로운 명령을 도입했습니다.

docker system prune 은 모든 매달린 데이터를 삭제합니다 (예 : 컨테이너가 중지됨, 컨테이너가없는 볼륨 및 컨테이너가없는 이미지). -a 옵션을 사용하여 사용하지 않는 데이터도.

또한 :

사용하지 않는 이미지의 경우 docker image prune -a (매달려있는 이미지와 unsed 이미지를 제거하기 위해).
경고 : ' 사용하지 않음 '은 "컨테이너에서 참조하지 않는 이미지"를 의미합니다. -a

AL답변 에서 볼 수 있듯이 docker system prune --all 은 매달린 이미지뿐만 아니라 사용되지 않는 모든 이미지를 제거합니다.

docker xxx prune--filter 옵션 과 결합하면 가지 치기를 제한하는 좋은 방법이 될 수 있습니다 ( docker SDK API 1.28 최소, 따라서 docker 17.04+ )

현재 지원되는 필터는 다음과 같습니다.

  • until (<timestamp>) -주어진 타임 스탬프 이전에 생성 된 컨테이너, 이미지 및 네트워크 만 제거합니다.
  • label ( label=<key> , label=<key>=<value> , label!=<key> 또는 label!=<key>=<value> )-컨테이너, 이미지, 네트워크 및 볼륨을 ( 또는 없이 , label!=... 이 사용되는 경우) 지정된 레이블.

예는 " 이미지 정리 "를 참조하십시오.

원문 답변 (2016 년 9 월)

나는 보통 :

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

그 [매달린 이미지]를 제거 하는 별칭이 있습니다. 13 : drmi

dangling=true 필터는 사용되지 않은 이미지를 찾습니다.

이렇게하면 레이블이 지정된 이미지에서 더 이상 참조하지 않는 중간 이미지가 제거됩니다.

종료 된 프로세스 (컨테이너)에 대해 먼저 동일한 작업을 수행합니다.

alias drmae='docker rm $(docker ps -qa --no-trunc --filter "status=exited")'

haridsv 가 주석에서 지적했듯이 :

기술적으로는 이미지를 정리하기 전에 먼저 컨테이너를 정리해야합니다. 이렇게하면 매달린 이미지가 더 많이 포착되고 오류가 줄어 듭니다.

Jess Frazelle (jfrazelle) 에는 bashrc 기능이 있습니다 .

dcleanup(){
    docker rm -v $(docker ps --filter status=exited -q 2>/dev/null) 2>/dev/null
        docker rmi $(docker images --filter dangling=true -q 2>/dev/null) 2>/dev/null
        }
        

"참조되지 않은"이미지뿐만 아니라 오래된 이미지를 제거하려면 docker-gc 고려할 수 있습니다.

간단한 Docker 컨테이너 및 이미지 가비지 수집 스크립트.

  • 1 시간 이상 전에 종료 된 컨테이너는 제거됩니다.
  • 나머지 컨테이너에 속하지 않는 이미지는 제거됩니다.
출처 : https://stackoverflow.com/questions/32723111/how-to-remove-old-and-unused-docker-images
728x90
반응형