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.
docker run
con el--rm
indicador que haría que el contenedor sea efímero, eliminando todos los archivos del contenedor después de la ejecución.docker system prune
comando. Vea mi respuesta a continuación .Portainer
Podemos administrarall the old containers, non using volumes and images
mediante esta herramienta Es una interfaz de usuario de administración simple para los acopladoresPlease refer my update below on how to deploy the application