Тож особисто я рекомендую робити це як частину вашого сценарію розгортання як для зображень, так і для контейнерів, зберігаючи лише найсвіжіші n-контейнери та зображення. Я тегую свої зображення Docker за тією ж схемою версій, з якою я використовую git tag
, а також завжди мічую останнє зображення 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 для відкатів і позбутися всього іншого. Unix's 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)
Знову ж ідея стосується контейнерів, але ви отримаєте її до цього моменту, тому я перестану наводити приклади.