Donc, personnellement, je recommande de le faire dans le cadre de votre script de déploiement pour les images et les conteneurs, en ne conservant que les n conteneurs et les images les plus récents. Je marque mes images Docker avec le même schéma de version que j'utilise et je marque git tag
toujours la dernière image Docker avec «dernier». Cela signifie que sans rien nettoyer, mes images Docker ressemblent à:
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
Maintenant, bien sûr, je ne veux pas que toutes mes images (ou conteneurs) reviennent à perpétuité sur toutes mes boîtes de production. Je veux juste les 3 ou 4 derniers annulations et me débarrasser de tout le reste. Unix tail
est votre meilleur ami ici. Depuis docker images
et les docker ps
deux par date, nous pouvons simplement utiliser tail
pour sélectionner tous les trois sauf les trois et les supprimer:
docker rmi $(docker images -q | tail -n +4)
Exécutez cela avec vos scripts de déploiement (ou localement) pour toujours garder juste assez d'images pour revenir confortablement sans prendre trop de place ou encombrer les vieilles images.
Personnellement, je ne garde qu'un seul conteneur sur ma boîte de production à tout moment, mais vous pouvez faire la même chose avec des conteneurs si vous en voulez plus:
docker rm $(docker ps -aq | tail -n +4)
Enfin, dans mon exemple simplifié, nous ne traitons qu'avec un référentiel à la fois, mais si vous en aviez plus, vous pouvez simplement devenir un peu plus sophistiqué avec la même idée. Disons que je veux juste garder les trois dernières images de some_repo / some_image. Je peux mélanger dans grep
et awk
et être sur mon chemin:
docker rmi $(docker images -a | grep 'some_repo/some_image' | awk '{print $3}' | tail -n +4)
Encore une fois, la même idée s'applique aux conteneurs, mais vous l'obtenez à ce stade, donc je vais arrêter de donner des exemples.