Vì vậy, cá nhân tôi khuyên bạn nên thực hiện điều này như một phần của tập lệnh triển khai cho cả hình ảnh và vùng chứa, chỉ giữ lại n container và hình ảnh gần đây nhất. Tôi gắn thẻ các hình ảnh Docker của mình với cùng một lược đồ phiên bản mà tôi sử dụng git tag
cũng như luôn gắn thẻ hình ảnh Docker mới nhất với "mới nhất". Điều này có nghĩa là không cần dọn dẹp bất cứ thứ gì, hình ảnh Docker của tôi trông giống như:
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
Bây giờ, tất nhiên tôi không muốn giữ tất cả hình ảnh (hoặc thùng chứa) của mình trở lại vĩnh viễn trên tất cả các hộp sản xuất của mình. Tôi chỉ muốn 3 hoặc 4 cuối cùng cho rollback và loại bỏ mọi thứ khác. Unix tail
là người bạn tốt nhất của bạn ở đây. Vì docker images
và docker ps
cả hai thứ tự theo ngày, chúng tôi chỉ có thể sử dụng tail
để chọn tất cả trừ ba hàng đầu và loại bỏ chúng:
docker rmi $(docker images -q | tail -n +4)
Chạy cùng với các tập lệnh triển khai của bạn (hoặc cục bộ) để luôn giữ đủ hình ảnh để thoải mái quay lại mà không chiếm quá nhiều chỗ hoặc làm lộn xộn các công cụ với hình ảnh cũ.
Cá nhân, tôi chỉ giữ một container trên hộp sản xuất của mình bất cứ lúc nào, nhưng bạn có thể làm điều tương tự với các container nếu bạn muốn nhiều hơn:
docker rm $(docker ps -aq | tail -n +4)
Cuối cùng, trong ví dụ đơn giản hóa của chúng tôi, chúng tôi chỉ xử lý một kho lưu trữ tại một thời điểm, nhưng nếu bạn có nhiều hơn, bạn có thể tinh vi hơn một chút với cùng một ý tưởng. Nói rằng tôi chỉ muốn giữ ba hình ảnh cuối cùng từ some numpo / some_image. Tôi chỉ có thể hòa nhập grep
và awk
trên con đường của mình:
docker rmi $(docker images -a | grep 'some_repo/some_image' | awk '{print $3}' | tail -n +4)
Một lần nữa, ý tưởng tương tự áp dụng cho các container, nhưng bạn hiểu nó vào thời điểm này vì vậy tôi sẽ ngừng đưa ra ví dụ.