따라서 개인적으로 이미지와 컨테이너 모두에 대한 배포 스크립트의 일부로 최신 n 컨테이너와 이미지 만 유지하는 것이 좋습니다. Docker 이미지에 사용하는 것과 동일한 버전 관리 스키마 git tag
로 태그를 지정하고 항상 최신 Docker 이미지에 "최신"태그를 지정합니다. 즉, 아무것도 정리하지 않으면 Docker 이미지가 다음과 같이 나타납니다.
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
some_repo/some_image 0.0.5 8f1a7c7ba93c 23 hours ago 925.4 MB
some_repo/some_image latest 8f1a7c7ba93c 23 hours ago 925.4 MB
some_repo/some_image 0.0.4 0beabfa514ea 45 hours ago 925.4 MB
some_repo/some_image 0.0.3 54302cd10bf2 6 days ago 978.5 MB
some_repo/some_image 0.0.2 0078b30f3d9a 7 days ago 978.5 MB
some_repo/some_image 0.0.1 sdfgdf0f3d9a 8 days ago 938.5 MB
물론 모든 이미지 (또는 컨테이너)가 모든 프로덕션 박스에서 영구적으로 돌아 가지 않게하고 싶습니다. 롤백을 위해 마지막 3 또는 4를 원하고 다른 모든 것을 제거하고 싶습니다. 유닉스 tail
가 가장 친한 친구입니다. 이후 docker images
및 docker ps
날짜별로 모두 위해, 우리는 그냥 사용할 수 있습니다 tail
제외한 모든 세 가지를 선택하고 그들을 제거 :
docker rmi $(docker images -q | tail -n +4)
너무 많은 공간을 차지하거나 오래된 이미지를 정리하지 않고 충분한 이미지 만 편안하게 롤백 할 수 있도록 배포 스크립트 (또는 로컬)와 함께 실행하십시오.
개인적으로, 나는 항상 하나의 컨테이너를 생산 상자에 보관하지만 더 많은 것을 원한다면 컨테이너와 동일한 종류의 작업을 수행 할 수 있습니다.
docker rm $(docker ps -aq | tail -n +4)
마지막으로 간단한 예제에서는 한 번에 하나의 저장소 만 처리하지만 더 많은 정보가있는 경우 동일한 아이디어로 조금 더 정교해질 수 있습니다. some_repo / some_image에서 마지막 세 이미지를 유지하고 싶다고 가정 해보십시오. 난 그냥 혼합 수 grep
및 awk
나의 방법에있을 :
docker rmi $(docker images -a | grep 'some_repo/some_image' | awk '{print $3}' | tail -n +4)
다시 말하지만, 동일한 아이디어가 컨테이너에도 적용되지만이 시점까지 이해가 되니 예제 제공을 중단하겠습니다.