오래된 Docker 이미지를 정기적으로 청소하기위한 모범 사례 및 / 또는 도구가 있습니까?


13

Docker 레지스트리에서 오래된 이미지를 삭제할 때 우아한 방법이나 모범 사례가 있습니까?

https://github.com/docker/docker-registry/labels/delete 에서 많은 요청 / 문제가 있지만 좋은 / 인기 솔루션을 찾지 못했습니다.

그렇다면 그렇게하는 데 도움이되는 도구 나 기술이 있습니까?

또한 수행하는 동안 따라야 할 모범 사례가 있습니까?


2
레지스트리를 청소하는 방법을 묻고 있습니까? (당신이 제공하는 링크와 질문은 무엇입니까?)하지만 허용되는 답변은 레지스트리를 청소하는 것이 아니라 로컬 도커를 청소하는 것입니다.
dalore

답변:


10

Spotify / docker-gc 와 함께 행운을 빕니다 . cron 또는 docker 컨테이너로 실행할 수 있습니다.

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

  • 1 시간 이상 지난 컨테이너는 제거됩니다.
  • 나머지 컨테이너에 속하지 않은 이미지는 제거됩니다.

2
언뜻보기에는 모든 배쉬 요소 뒤에 @rombob의 대답에서 나온 하나의 라이너의 하위 집합 인 것 같습니다. 그것이 사실입니까, 아니면 docker-gc제가 빠졌다 는 "지능"이 있습니까?
AnoE

1
Op는 레지스트리에서 정리하는 방법에 대한 링크 및 질문을하지만 docker-gc는 레지스트리에서 정리하지 않고 로컬 컴퓨터에서만 정리합니다. OP가 로컬에서 정리하는 방법을 실제로 요청한 것 같습니다.
dalore

Docker-gc의 페이지는 이제 docker system prune대신 사용 하는 것이 좋습니다 . 그러나 Docker의 정리로 일부 이미지를 제거하는 방법을 찾지 못했습니다. docker system prune?로 일부 이미지를 제외시키는 방법이 있습니다 .
Alexander Artemenko

9

이것이 모범 사례라고 부를 수는 없지만 이것이 cron에 의해 트리거되는 방식이며 더 나은 제안을 보게되어 기쁩니다.

echo "safely removing untagged images"
docker rmi $(docker images | awk '/<none>/{print $3}')

echo "safely removing stopped containers"
docker rm $(docker ps -a -q)

echo "safely removing old containers"
docker ps -a | awk '/weeks ago|months ago|days ago/{print $1}' | xargs --no-run-if-empty docker rm

echo "safely removing old images"
docker images | awk '/weeks ago|months ago|days ago/{print $3}' | xargs --no-run-if-empty docker rmi

echo "safely removing old volumes, custom rebuild of martin/docker-cleanup-volumes image"
docker run -v /var/run/docker.sock:/var/run/docker.sock -v $(readlink -f /var/lib/docker):/var/lib/docker --rm example/docker-cleanup-volumes

echo "native cleanup Docker => 12"
docker system prune -f

grep과 awk를 연결하지 말고 awk 명령`regex {command}`직전에 동일한 필터를 수행하십시오.
Tensibai

1
@Tensibai AWK 마법사를 행복하게 만들기 위해 무엇이든 :)
rombob

그냥 단지 현학적 아니라 경우에, 당신은 프로세스 산란 환경 변화의 큰 무리 저장 : 그것은 매우 여기 변경되지 않습니다,하지만에 대한 옹호에 어떤 경우는 :) 좋다
Tensibai

@ Tensibai 확실히, 좋은 습관은 시간과 함께 지불, 산란 우리에게 시간과 돈이 :)
rombob

특히 R 입력을 준비하기 위해 수십억 줄의 로그 파일을 구문 분석 / 형식화 할 때 수십 줄 이상을 기대하지 않습니다.
Tensibai

4

내 로컬 컴퓨터 (mac)에 작은 스크립트가 있는데 정기적으로 실행하여 초과 이미지를 정리합니다. clean-docker-for-mac.sh

내 서버의 경우 종료 된 컨테이너를 주기적으로 정리하고 사용하지 않는 이미지와 볼륨을 제거하는 meltwater / docker-cleanup 을 실행 합니다.

Codemason 작업에 다양한 Docker 이미지를 사용하여 이와 같은 스크립트가 필요합니다. 즐겨!


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.