Quindi, personalmente consiglio di farlo come parte dello script di distribuzione sia per le immagini che per i contenitori, mantenendo solo i n contenitori e le immagini più recenti. Taggo le mie immagini Docker con lo stesso schema di versioning che uso git tag
e taggando sempre l'ultima immagine Docker con "latest". Ciò significa che senza ripulire nulla, le mie immagini Docker finiscono per apparire come:
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
Ora, ovviamente, non voglio che tutte le mie immagini (o contenitori) tornino alla perfezione su tutte le mie scatole di produzione. Voglio solo gli ultimi 3 o 4 per i rollback e liberarmi di tutto il resto. Unix tail
è il tuo migliore amico qui. Da allora docker images
e in docker ps
entrambi gli ordini per data, possiamo semplicemente usare tail
per selezionare tutti tranne i primi tre e rimuoverli:
docker rmi $(docker images -q | tail -n +4)
Eseguilo insieme agli script di distribuzione (o localmente) per mantenere sempre le immagini sufficienti per tornare comodamente senza occupare troppo spazio o ingombrare le cose con le vecchie immagini.
Personalmente, tengo solo un contenitore sulla mia scatola di produzione in qualsiasi momento, ma puoi fare lo stesso tipo di cose con i contenitori se vuoi di più:
docker rm $(docker ps -aq | tail -n +4)
Infine, nel mio esempio semplificato abbiamo a che fare solo con un repository alla volta, ma se ne avessi di più, puoi solo diventare un po 'più sofisticato con la stessa idea. Supponiamo che voglia solo mantenere le ultime tre immagini da some_repo / some_image. Posso solo mescolo in grep
e awk
e per la mia strada:
docker rmi $(docker images -a | grep 'some_repo/some_image' | awk '{print $3}' | tail -n +4)
Ancora una volta, la stessa idea si applica ai contenitori, ma a questo punto la capisci, quindi smetterò di dare esempi.