Por lo tanto, personalmente recomiendo hacer esto como parte de su script de implementación para imágenes y contenedores, manteniendo solo los n contenedores e imágenes más recientes. Etiqueto mis imágenes de Docker con el mismo esquema de versiones que utilizo git tag
y siempre etiqueto la última imagen de Docker con "último". Esto significa que sin limpiar nada, mis imágenes de Docker terminan pareciendo:
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
Ahora, por supuesto, no quiero mantener todas mis imágenes (o contenedores) volviendo a perpetuidad en todas mis cajas de producción. Solo quiero los últimos 3 o 4 para retrocesos y deshacerme de todo lo demás. Unix tail
es tu mejor amigo aquí. Desde docker images
y docker ps
ambos ordenados por fecha, podemos usar tail
para seleccionar todos menos los tres primeros y eliminarlos:
docker rmi $(docker images -q | tail -n +4)
Ejecútelo junto con sus scripts de implementación (o localmente) para mantener siempre las imágenes suficientes para retroceder cómodamente sin ocupar demasiado espacio o desordenar las imágenes antiguas.
Personalmente, solo mantengo un contenedor en mi caja de producción en cualquier momento, pero puedes hacer lo mismo con los contenedores si quieres más:
docker rm $(docker ps -aq | tail -n +4)
Finalmente, en mi ejemplo simplificado, solo estamos tratando con un repositorio a la vez, pero si tuviera más, puede volverse un poco más sofisticado con la misma idea. Digamos que solo quiero mantener las últimas tres imágenes de some_repo / some_image. Yo sólo puede mezclar en grep
y awk
y estar en mi camino:
docker rmi $(docker images -a | grep 'some_repo/some_image' | awk '{print $3}' | tail -n +4)
Una vez más, la misma idea se aplica a los contenedores, pero ya lo entiendes, así que dejaré de dar ejemplos.