Docker prune: tutorial de su sintaxis y ejemplos

Docker prune se emplea para eliminar objetos innecesarios, como contenedores detenidos, volúmenes en desuso, redes antiguas o imágenes. De esta manera, es posible optimizar el uso del disco y liberar espacio de almacenamiento.

¿Qué es Docker prune?

Los comandos Docker prune y system prune se utilizan para limpiar sistemáticamente los recursos de Docker que ya no necesitas y liberar espacio de almacenamiento. Cuando las imágenes, redes, volúmenes y contenedores Docker permanecen sin uso durante un tiempo, pueden ocupar una gran cantidad de espacio. El comando prune te permite eliminar rápidamente estos recursos que están sin utilizar para que mantengas tu sistema organizado y funcionando con eficiencia.

En entornos de desarrollo en los que se suelen crear y probar contenedores es muy habitual que se acumulen muchos objetos obsoletos. Docker prune no solo limpia contenedores e imágenes, sino también redes y volúmenes que ya no necesitas, lo que facilita considerablemente la gestión de los recursos de Docker y evita que el sistema quede desordenado y sobrecargado.

¿Para qué sirve Docker prune?

El comando prune se puede emplear en distintas situaciones en el entorno de Docker. Te presentamos a continuación cuatro escenarios típicos en los que se usa:

Para optimizar procesos de trabajo: los entornos Docker suelen utilizarse mucho para desarrollo, pruebas y producción. Si no se limpian con frecuencia, se van acumulando recursos que sobrecargan el espacio de almacenamiento y afectan al rendimiento del sistema. Al emplear Docker prune para eliminar esos recursos sin usar, se optimiza el sistema, lo cual es muy beneficioso en entornos basados en la nube, en los que los costes aumentan a medida que se requiere más almacenamiento y potencia de procesamiento.

Para mejorar la seguridad: los recursos de Docker obsoletos o innecesarios pueden suponer riesgos de seguridad. Docker prune elimina contenedores, imágenes, redes y volúmenes que no se utilizan, lo que reduce el riesgo de que componentes desactualizados y potencialmente inseguros queden expuestos. Mantener un ecosistema Docker organizado ayuda a minimizar la superficie de ataque y mejora la seguridad de toda la infraestructura informática.

Para mejorar el rendimiento: cuando el entorno Docker se encuentra sobrecargado, se consumen recursos como la CPU y la memoria de manera innecesaria, lo que afecta al rendimiento del sistema. Al hacer limpiezas frecuentes con Docker prune, se libera espacio y se mejora la eficiencia en la gestión y ejecución de contenedores, lo que se traduce en menores tiempos de carga, despliegues más rápidos de aplicaciones y, en general, una mayor capacidad de respuesta del sistema.

Para un mantenimiento más fácil: ejecutar Docker prune con frecuencia facilita de forma considerable el mantenimiento del entorno Docker. Al eliminar recursos no utilizados, las tareas de gestión son menos complicadas para los desarrolladores. Además, resulta más sencillo mantener un control sobre los componentes Docker activos y relevantes, por lo que es posible detectar y solucionar problemas con mayor rapidez. De esta manera, los equipos pueden centrarse en desarrollar y mejorar sus aplicaciones en lugar de tener que lidiar con recursos innecesarios.

Sintaxis: ¿cómo se utiliza Docker prune?

¿Tienes un entorno Docker y quieres eliminar recursos para liberar espacio y simplificar la gestión? En ese caso, basta con que accedas a los servicios de prune ejecutando este comando:

docker system prune
bash

Por defecto, Docker identifica los contenedores detenidos, las imágenes no utilizadas, las redes y los volúmenes sin uso, y solicita confirmación para eliminarlos. Escribe y y presiona Enter para hacerlo. Si no, puedes usar la opción -f para saltarte la confirmación y comenzar con la limpieza directamente:

docker system prune -f
bash

Recomendación: antes de usar Docker prune, te aconsejamos revisar qué recursos de Docker están actualmente en el sistema. Utiliza los siguientes comandos para obtener una lista de todos los contenedores, imágenes, redes y volúmenes:

docker ps -a
docker images
docker volume ls
docker network ls
bash

Opciones de Docker prune

Presentamos a continuación una tabla con las opciones disponibles para el comando docker system prune:

Opción Descripción
--all, -a Elimina todos los recursos Docker sin utilizar.
--force, -f Realiza la limpieza sin confirmación del usuario.
--volumes Elimina volúmenes sin utilizar.
--filter, -f Permite filtrar por criterios los recursos que se van a eliminar.
--help Proporciona ayuda para utilizar el comando.

Docker prune: tutorial para utilizar el comando

En Docker pueden emplearse diferentes comandos para realizar una limpieza específica de tipos de recursos específicos. De esta manera, puedes controlar exactamente qué recursos vas a eliminar.

Docker prune --filter

Se pueden utilizar filtros para controlar qué recursos se eliminarán, ya sean contenedores, imágenes, redes o volúmenes. Esta función es especialmente útil en entornos de desarrollo en los que se suelen crear y olvidar con rapidez muchos recursos temporales.

En general, se utiliza esta sintaxis:

docker <command> prune --filter "filter=<value>"
bash

A continuación, se enumeran algunos de los posibles filtros:

  • until: sirve para filtrar recursos por fecha de creación. <duration> puede ser un valor numérico seguido de una unidad como h (horas), m (minutos) o s (segundos).
docker <command> prune --filter "until=<duration>"
bash

Ejemplo: eliminar todos los contenedores detenidos que tengan más de 24 horas.

docker container prune --filter "until=24h"
bash
  • label: filtra recursos en función de sus etiquetas de Docker.
docker <command> prune --filter "label=<label>"
bash

Ejemplo: limpiar todos los volúmenes sin utilizar que tengan la etiqueta mylabel.

docker volume prune --filter "label=mylabel"
bash
  • dangling: filtra recursos que ya no están asociados con ningún contenedor.
docker <command> prune --filter "dangling=true"
bash

Ejemplo: eliminar todas las imágenes que ya no están en uso (dangling).

docker image prune --filter "dangling=true"
bash

Además de los filtros mencionados, también existen opciones de filtros más específicos según el tipo de recurso:

  • before y since para imágenes: filtran imágenes según su fecha de creación, ya sea antes o desde un momento específico.
  • exited para contenedores: filtra los contenedores según su estado de salida (por ejemplo, exited=0 para contenedores que han terminado correctamente).

Eliminar recursos Docker

Paso 1: abre un terminal o una línea de comandos en tu sistema.

Paso 2: ejecuta Docker prune para limpiar el sistema:

docker {resource} prune
bash

Sustituye {resource} por el tipo de recursos que quieras eliminar. Son valores válidos container, image, volume y network.

Eliminar contenedores Docker

Por defecto, Docker no libera automáticamente los contenedores cuando estos han terminado su ciclo de vida. Por ello, es importante revisar con frecuencia los contenedores detenidos y eliminarlos si es necesario, ya que así se liberan los recursos bloqueados y quedan disponibles para los contenedores en ejecución. A continuación, describimos dos métodos para hacerlo:

  • docker rm: este comando está diseñado para eliminar manualmente uno o varios contenedores Docker, por lo que es la opción más adecuada si sabes qué contenedores quieres eliminar. Debes especificar las ID o los nombres de los contenedores que quieres eliminar, de forma que puedas eliminar solo ciertos contenedores sin afectar a otros.

Aquí tienes un ejemplo para eliminar los contenedores con los nombres container1 y container2:

docker rm container1 container2
bash
  • docker container prune: este comando está diseñado para eliminar de una sola vez varios contenedores detenidos. Esta opción es ideal para liberar espacio de manera rápida y eficiente al eliminar todos los contenedores que están detenidos que no tengan procesos en ejecución.
docker container prune
bash

Este comando enumera todos los contenedores detenidos y pide tu confirmación antes de eliminarlos, lo que resulta especialmente útil en entornos donde se crean muchos contenedores temporales que luego ya no se necesitan.

Para la gestión y el mantenimiento diarios de tu entorno Docker, te recomendamos usar docker container prune con frecuencia para que los contenedores detenidos se limpien automáticamente. Esto te ayudará a ahorrar tiempo y asegurará que no haya recursos innecesarios que puedan empeorar el rendimiento del sistema. En cambio, docker rm es perfecto cuando hay que eliminar solo determinados contenedores, ya sea para pruebas, desarrollo u otros requisitos.

Eliminar imágenes Docker

Las imágenes de Docker son la base de los contenedores. Con el tiempo, pueden acumularse muchas versiones y etiquetas. Al crear o actualizar nuevas imágenes, suelen quedar imágenes antiguas o sin utilizar (las denominadas “dangling”), que ocupan espacio en tu sistema y pueden afectar al rendimiento, sobre todo si se trata de una gran cantidad.

Docker prune permite identificar y eliminar imágenes que ya no se utilizan de la siguiente forma:

docker image prune [Options]
bash

A continuación, se describen algunas de las posibles opciones.

  • -a, --all: sirve para eliminar no solo las imágenes dangling, sino también las imágenes sin utilizar. Las imágenes no usadas son las que ya no tienen etiquetas y, por tanto, no pueden ser referenciadas directamente por etiquetas.
docker image prune -a
bash
  • -f, --force: por defecto, Docker pide una confirmación antes de eliminar las imágenes. Mediante -f o --force puedes omitir ese paso de confirmación y realizar la eliminación directamente.
docker image prune -f
bash

Eliminar todas las imágenes Docker

También puedes limpiar rápidamente todas las Docker Images que ya no necesites. Para utilizar Docker prune correctamente, abre primero el terminal o la línea de comandos y escribe lo siguiente:

docker image prune -a --force
bash

Asegúrate de identificar qué imágenes se eliminarán antes de realizar la limpieza. La opción -a también puede eliminar imágenes sin usar que aún podrías necesitar.

Eliminar volúmenes Docker

Los volúmenes son persistentes y mantienen los datos más allá de la vida útil del contenedor. Con el tiempo, estos volúmenes pueden aumentar y ocupar recursos innecesarios.

docker volume prune
bash

Este comando busca todos los volúmenes en los que ya no hay contenedores activos. Se te mostrará una lista de volúmenes que se sugiere eliminar y se pedirá una confirmación antes de proceder con la limpieza.

En cambio, el comando docker volume rm elimina volúmenes de Docker específicos de manera directa, una opción útil cuando sabes exactamente qué volumen quieres borrar independientemente de si lo está utilizando un contenedor o no. Para eliminar un Docker Volume específico, utiliza el comando docker volume rm seguido del nombre o ID del volumen:

docker volume rm volume_name
bash

Este comando elimina los datos de forma permanente, por lo que debes asegurarte de que conoces el nombre o ID exacto del volumen que quieres eliminar.

Eliminar redes Docker

Las redes de Docker son un componente fundamental para la comunicación entre contenedores, ya sea que se encuentren en el mismo host o distribuidos entre varios. Estas redes permanecen activas incluso después de que los contenedores se detengan o eliminen. Con el tiempo, pueden acumularse redes que ya no se utilizan y que ocupan recursos innecesarios. El comando docker prune network es una manera sencilla de identificar y eliminar estas redes que ya no están en uso.

Este es el comando:

docker network prune [OPTIONS]
bash

Docker genera una lista de todas las redes que ya no son utilizadas por contenedores activos o que ya no están referenciadas. Después, pide una confirmación antes de eliminarlas.

Mejores prácticas de Docker prune

  • Automatización de la limpieza: implementa scripts o herramientas automatizadas para eliminar con frecuencia imágenes, contenedores y volúmenes Docker no usados. Así mantendrás limpio el entorno y optimizarás el rendimiento.
  • Parches de seguridad y actualizaciones: asegúrate de que los motores Docker, los sistemas operativos del host y todas las imágenes Docker se comprueben y actualicen con regularidad para minimizar las vulnerabilidades.
  • Monitoreo y registro: utiliza herramientas de monitoreo y registro para supervisar el rendimiento de los contenedores, detectar eventos inesperados y fomentar la proactividad en el mantenimiento.
  • Copias de seguridad externas: establece rutinas para realizar copias de seguridad externas de datos importantes de los contenedores Docker, por ejemplo, realizando de vez en cuando copias de seguridad de contenidos de bases de datos o archivos de configuración.
  • Comprobación manual antes de la eliminación: comprueba con cuidado si realmente no necesitas ciertos recursos antes de eliminarlos. De esta manera, habrá menos riesgo de perder datos que no querías borrar o de que se produzcan interrupciones en procesos en curso.
Consejo

Si acabas de empezar a trabajar con Docker y necesitas aprender lo básico, te recomendamos nuestro tutorial de Docker.

Compute Engine
La solución IaaS ideal para tus cargas de trabajo
  • vCPU económico con núcleos dedicados
  • Flexible y sin periodo mínimo contractual
  • Soporte experto 24/7
¿Le ha resultado útil este artículo?
Utilizamos cookies propias y de terceros para mejorar nuestros servicios y mostrarle publicidad relacionada con sus preferencias mediante el análisis de sus hábitos de navegación. Si continua navegando, consideramos que acepta su uso. Puede obtener más información, o bien conocer cómo cambiar la configuración de su navegador en nuestra. Política de Cookies.
Page top