질문 : 오래되고 사용되지 않는 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")'
기술적으로는 이미지를 정리하기 전에 먼저 컨테이너를 정리해야합니다. 이렇게하면 매달린 이미지가 더 많이 포착되고 오류가 줄어 듭니다.
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
'개발관련 > other' 카테고리의 다른 글
GUID와 UUID간에 차이점 (0) | 2021.10.01 |
---|---|
Angular / RxJs`Subscription` 구독 취소 시기 (0) | 2021.09.30 |
Haskell은 현실 세계에서 무엇에 사용되는가? (0) | 2021.09.28 |
deep copy와 shallow copy의 차이점 (0) | 2021.09.28 |
JSON.NET 오류 "Error Self referencing loop detected for type System.data.entity occurs" (0) | 2021.09.28 |