Saltar al contenido principal

Poda Docker: Una guía completa con ejemplos prácticos

Elimina contenedores, imágenes, volúmenes y redes que no utilices de forma segura con un solo comando del shell. Mantén tu sistema ordenado y recupera espacio en disco eliminando los recursos Docker no utilizados.
Actualizado 6 feb 2025  · 20 min de lectura

Si trabajas con Docker a diario, sabes lo rápido que puede consumir espacio en disco.  

Con el tiempo, tu sistema acumula imágenes, contenedores, volúmenes y redes sin utilizar. La mayoría de ellos están inactivos, ocupando valioso espacio de almacenamiento e impidiendo potencialmente que trabajes en tu proyecto actual. Afortunadamente, Docker proporcionacomandos de limpieza integrados en que eliminan fácilmente los recursos innecesarios.

Estos comandos de limpieza forman parte de la familia docker prune, y hoy aprenderás todo sobre ellos. Se convertirán rápidamente en tu solución para liberar espacio en disco.  

Empecemos con un breve resumen antes de sumergirnos en ejemplos prácticos.  

¿Eres nuevo en Docker? Echa un vistazo a nuestro guide sobre cómo aprender Docker desde cero para que los profesionales de los datos se pongan al día rápidamente.

¿Qué es Docker Prune?  

El término "Docker Prune" suele referirse a un conjunto de comandos diseñados para ayudarte a eliminar los recursos de Docker no utilizados e innecesarios.  

Con el tiempo, sobre todo si trabajas en varios proyectos, crearás innumerables imágenes, ejecutarás contenedores y configurarás volúmenes y redes. Todos ellos se acumulan en tu sistema, ocupando una cantidad importante de espacio en disco. El objetivo de docker prune es limpiar ese desorden y recuperar espacio de almacenamiento.  

Dicho esto, docker prune es más de lo que parece.  

No se trata de un único comando que puedas ejecutar. Bueno, podrías, pero a veces necesitas un control granular sobre lo que se elimina. Ahí es donde entra este artículo. Te mostrará cómo gestionar la poda con eficacia, asegurándote de que eliminas sólo lo que pretendes, y cómo practicar en un entorno seguro para evitar eliminar accidentalmente datos importantes.  

También hay que tener en cuenta que los comandos de poda sólo eliminan los recursos que no se utilizan activamente. Las imágenes, volúmenes y redes referenciados por contenedores en ejecución no se borrarán. En otras palabras, la poda no interferirá con las cargas de trabajo activas.  

En la siguiente sección, te guiaremos a través de los distintos tipos de comandos de poda y te explicaremos cómo encajan en tu flujo de trabajo.  

¿Quieres añadir Docker a tu CV o a tu carteraio? Estas 10 ideas de proyectos Docker te prepararán para el trabajo.

Todos los comandos Docker Prune con ejemplos prácticos  

Docker proporciona varios comandos prune que te permiten limpiar los recursos no utilizados individualmente o todos a la vez. En esta sección, aprenderás sobre ellos, tanto a través dela teoría de como de ejemplos prácticos.

sistema docker prune  

Este es el comando más completo para recuperar espacio en disco. Elimina todos los contenedores, redes, imágenes y caché de construcción no utilizados en una sola operación.  

Si buscas una forma rápida de liberar espacio en disco con un solo comando, éste es el que debes utilizar.  

Puedes pasar opciones al comando docker system prune:  

  • -a o --all elimina todas las imágenes no utilizadas en lugar de sólo las colgantes (imágenes que no están etiquetadas ni referenciadas por ningún contenedor).  
  • --filter te permite especificar valores de filtro.  
  • -f o --force se salta la pregunta de confirmación.  
  • --volumes también poda volúmenes anónimos junto con contenedores, redes, imágenes y caché de construcción.  

Por defecto, docker system prune te pide confirmación, ya que es una acción potencialmente destructiva potencialmente destructiva:

Aviso de confirmación de poda del sistema Docker

Imagen 1 - Mensaje de confirmación de la poda del sistema Docker

Para omitir el aviso y eliminar todas las imágenes, contenedores, redes y volúmenes no utilizados con un solo comando, ejecuta:  

docker system prune -a -f --volumes

Elimina todo con un único comando docker system prune

Imagen 2 - Elimina todo con un único comando docker system prune

Pero, ¿y si necesitas un control más granular? Vamos a tratar eso a continuación.

poda de contenedores docker

En pocas palabras, este comando elimina todos los contenedores parados.

Los contenedores detenidos permanecen en tu sistema hasta que se eliminan manualmente. Pueden ocupar espacio en disco y ser difíciles de detectar a menos que utilices una herramienta como Escritorio Docker Docker Desktop.

Al igual que docker system prune, este comando admite opciones:

  • --filter te permite especificar pares clave-valor para controlar qué contenedores se eliminan.
  • -f o --force se salta la pregunta de confirmación.

Aquí tienes una lista de contenedores que no se están ejecutando:

Lista de contenedores no en ejecución

Imagen 3 - Lista de contenedores no en ejecución

Para eliminar code-server (y cualquier otro contenedor detenido), ejecuta

docker container prune -f

Esto no te pedirá confirmación y, en cuestión de segundos, verás una salida como ésta:

Mensaje de salida de la poda de contenedores

Imagen 4 - Mensaje de salida de la poda de contenedores

Y así, sin más, ya no hay contenedores parados:

Lista de contenedores no en funcionamiento (2)

Imagen 5 - Lista de contenedores no en ejecución (2)

Ahora, ocupémonos de las imágenes no utilizadas.

podar imagen docker

De forma similar al comando anterior, docker image prune elimina las imágenes no utilizadas.

Por defecto, sólo elimina las imágenes colgantes, es decir, las que no están etiquetadas ni asociadas a un contenedor. Puedes utilizar una bandera opcional para eliminar todas las imágenes no utilizadas, no sólo las colgantes.

Aquí tienes una lista de opciones disponibles

  • -a o --all elimina todas las imágenes no utilizadas en lugar de sólo las que quedan colgando.
  • --filter te permite especificar pares clave-valor para controlar qué imágenes se eliminan.
  • -f o --force se salta la pregunta de confirmación.

Ahora, ¡vamos a verlo en acción!

Aquí tienes una lista de las imágenes que hay actualmente en el sistema:

Lista de imágenes Docker

Imagen 6 - Lista de imágenes Docker

Para eliminarlas todas con un solo comando, ejecuta

docker image prune -a -f

Verás una salida como ésta en el terminal:

Mensaje de salida de la poda de imágenes

Imagen 7 - Mensaje de salida de la poda de imágenes

Después, no queda ninguna imagen en Docker Desktop:

Lista de imágenes Docker (2)

Imagen 8 - Lista de imágenes Docker (2)

A continuación, vamos a tratar los volúmenes no utilizados.

podar volumen docker

Como su nombre indica, el comando docker volume prune elimina todos los volúmenes locales no utilizados. En otras palabras, borra los volúmenes a los que no hace referencia ningún contenedor.

Por defecto, el comando sólo elimina los volúmenes anónimos - volúmenes sin nombre creados por Docker cuando se inicia un contenedor. Para eliminar volúmenes nombrados explícitamente, tienes que pasar una opción adicional.

Estas son las opciones que tienes disponibles:

  • -a o --all elimina todos los volúmenes no utilizados en lugar de sólo los anónimos.
  • --filter te permite especificar pares clave-valor para controlar qué volúmenes se eliminan.
  • -f o --force se salta la pregunta de confirmación.

En nuestro sistema, tenemos un único volumen creado por el usuario a partir de un archivo docker-compose.yml:

Lista de volúmenes Docker

Imagen 9 - Lista de volúmenes Docker

El siguiente comando elimina todos los volúmenes locales:

docker volume prune -a -f

Después de ejecutarlo, verás una salida similar a ésta:

Mensaje de salida de la poda de volumen

Imagen 10 - Mensaje de salida de la poda de volumen

Ahora ya no quedan volúmenes:

Lista de volúmenes Docker (2)

Imagen 11 - Lista de volúmenes Docker (2)

Por último, veamos cómo eliminar las redes no utilizadas.

docker network prune

Cuando los contenedores Docker se comunican entre sí, suelen utilizar redes definidas por el usuario. Sin embargo, sus redes suelen permanecer en tu sistema una vez eliminados esos contenedores.

El comando docker network prune elimina las redes que ya no utiliza ningún contenedor.

Como los demás comandos de poda, incluye algunas opciones:

  • --filter te permite especificar pares clave-valor para controlar qué redes se eliminan.
  • -f o --force se salta la pregunta de confirmación.

A diferencia de las imágenes, contenedores o volúmenes, no puedes inspeccionar visualmente las redes a través de Docker Desktop, por lo que tendrás que trabajar desde la línea de comandos. Aquí tienes una lista de las redes disponibles:

Lista de redes Docker

Imagen 12 - Lista de redes Docker

Para eliminar todas las redes no asociadas a la instalación por defecto de Docker, ejecuta

docker network prune -a -f

Tras ejecutar el comando, verás una salida como ésta:

Mensaje de salida de la poda de red

Imagen 13 - Mensaje de salida de la poda de red

Todas las redes asociadas a los contenedores que se ejecutaban anteriormente han desaparecido:

Lista de redes Docker

Imagen 14 - Lista de redes Docker

Sin embargo, ten en cuenta que las tres redes restantes son esenciales para que Docker funcione correctamente y no se pueden eliminar.

¡Y eso es todo para el uso básico de los comandos de docker prune! A continuación, trataremos temas avanzados como el uso seguro de estos comandos y las mejores prácticas para entornos sensibles y de producción.

Utilizar Docker Prune con seguridad  

Los comandos docker prune ayudan a recuperar rápidamente espacio en disco, pero deben utilizarse utilizar con precauciónespecialmente en entornos de producción.

Borrar accidentalmente contenedores, imágenes o volúmenes importantes puede provocar la pérdida de datos e interrumpir flujos de trabajo críticos. Para evitarlo, es mejor comprender qué se va a eliminar antes de ejecutar cualquier comando de poda.  

Esta sección explica las precauciones clave que hay que tomar al ejecutar docker prune de forma segura.  

Comprender lo que se eliminará  

Los comandos prune están diseñados para eliminar sólo los recursos que no se estén utilizando activamente.  

Por ejemplo, docker image prune sólo elimina las imágenes colgantes, y docker volume prune sólo elimina los volúmenes que no estén unidos a ningún contenedor. Sin embargo, si añades opciones como -a -f, eliminarás todas las imágenes o volúmenes sin pedir confirmación.

Además, en entornos complejos, es fácil pasar por alto las dependencias, por lo que comprobarlas dos veces antes de podar es siempre una buena práctica.  

Antes de ejecutar cualquier comando prune, debes inspeccionar tu sistema para ver qué recursos están actualmente en uso. Hay varias formas de hacerlo, y en esta sección exploraremos las más comunes.  

Utiliza este comando para ver todos los contenedores, incluidos los parados:  

docker ps -a

Deberías ver un resultado similar a éste:

Lista de todos los contenedores Docker

Imagen 15 - Lista de todos los contenedores Docker

Del mismo modo, utiliza este comando para listar todas las imágenes, incluidas las no utilizadas:  

docker images

La salida tendrá una estructura similar a la anterior:  

Lista de todas las imágenes Docker

Imagen 16 - Lista de todas las imágenes Docker

Para comprobar los volúmenes, ejecuta este comando para listar todos los volúmenes:  

docker volume ls

Lista de todos los volúmenes Docker

Imagen 17 - Lista de todos los volúmenes Docker

Revisa detenidamente estos resultados para asegurarte de que no se elimina ningún recurso crítico por error.  

Funcionamiento en seco por seguridad  

Por desgracia, Docker sigue sin tener una opción integrada para una ejecución en seco de los comandos de poda, a pesar de que se solicitó hace años.  

Por ello, debes inspeccionar manualmente los recursos utilizando los comandos enumerados en la sección anterior antes de ejecutar un comando de poda.

Si trabajas en un entorno sensible donde la persistencia de los datos es crítica, siempre debes crear una copia de seguridad antes de ejecutar comandos de poda que afecten a volúmenes.

Por supuesto, se trata sólo de medidas de precaución, pero esperamos ver pronto implementada una opción de funcionamiento en seco.

Buenas prácticas para Docker Prune  

Para mantener tu entorno Docker libre de desorden innecesario, es importante que ejecutes regularmente los comandos prune -quizá incluso los automatices-.  

Esta sección te guía a través de las mejores prácticas para ejecutar comandos docker prune en entornos de producción.  

Utiliza docker prune regularmente  

Con el tiempo, Docker acumula imágenes no utilizadas, contenedores parados y volúmenes innecesarios, todo lo cual consume un importante espacio en disco.  

Ejecutar comandos de poda con regularidad mantiene limpio tu entorno y evita un uso excesivo del disco. Deberías incluirlos en tuprograma de mantenimiento .

Cada pocas semanas es un buen punto de partida, pero si tu configuración implica la creación y retirada frecuente de recipientes, considera un programa más frecuente.  

Sé prudente en la producción  

Cualquier trabajo en un entorno de producción requiere precaución adicional, y la poda de Docker no es una excepción.  

Un momento de falta de atención puede provocar tiempos de inactividad o pérdida de datos, y no quieres ser responsable de ello. Antes de ejecutar los comandos docker prune en un entorno de producción, inspecciona siempre los recursos del sistema utilizando docker ps -a, docker images y docker volume ls, como se explica en la sección anterior.  

Además, es una buena idea utilizar comandos de poda específicos en lugar del todo incluido docker system prune, ya que puede ser más fácil recuperarse de eliminaciones involuntarias.  

Automatizar la poda docker  

Otra buena práctica es agilizar los esfuerzos de limpieza automatizando los comandos de docker prune mediante tareas programadas.  

En Linux, puedes configurar una tarea cron para ejecutar los comandos a intervalos regulares, mientras que en Windows, puedes utilizar el Programador de tareas para una automatización similar. Esto ayuda a mantener un sistema ordenado sin necesidad de intervención manual. Sin embargo, en un entorno de producción, asegúrate de que la poda automatizada no interfiere con las cargas de trabajo críticas.  

Por ejemplo, esta tarea cron en Linux ejecuta un comando de poda global todos los domingos a medianoche:

0 0 * * 0 docker system prune -a -f

Solución de problemas con Docker Prune  

Los comandos docker prune son una solución a la que recurrir para recuperar espacio en disco, pero puede que no siempre sean suficientes para garantizar espacio suficiente para extraer nuevas imágenes o ejecutar nuevos contenedores.  

Además, podrías eliminar accidentalmente recursos importantes, por lo que es crucial discutir estrategias de recuperación.  

Ambos temas se tratarán en esta sección.  

Problemas de espacio en disco  

Las imágenes Docker pueden ser grandes -recientemente tuvimos una de más de 13 GB- y estamos seguros de que existen otras aún mayores. Así que, incluso después de ejecutar docker prune, puede que te encuentres con que tu sistema sigue teniendo poco espacio en disco.  

Para ver exactamente cuánto espacio utilizan por imágenes, contenedores y volúmenes, ejecuta este comando:

docker system df

Espacio utilizado por Docker

Imagen 18 - Espacio utilizado por Docker

Cuando recuperes espacio en disco con los comandos docker prune, añade la bandera -a para eliminar todas las imágenes, volúmenes o contenedores, no sólo los colgantes o anónimos. Por supuesto, ten en cuenta los posibles inconvenientes de este enfoque.  

Si el problema de espacio en disco persiste, tu única opción es aumentar el espacio disponible en disco.  

Recuperarse de las mudanzas accidentales

La recuperación es más fácil de decir que de hacer, por eso recomendamos comprender qué se eliminará con la poda antes de ejecutar el comando en sí.  

Aun así, si te encuentras en una situación en la que has podado accidentalmente contenedores, imágenes o volúmenes importantes, empieza por comprobar los registros para identificar lo que se ha eliminado.

En macOS, esto puede hacerse ejecutando los dos comandos siguientes(opciones para Windows y Linux):  

pred='process matches ".*(ocker|vpnkit).*" || (process in {"taskgated-helper", "launchservicesd", "kernel"} && eventMessage contains[c] "docker")'
/usr/bin/log stream --style syslog --level=debug --color=always --predicate "$pred"

/usr/bin/log show --debug --info --style syslog --last 30m --predicate "$pred" >/tmp/logs.txt

La ejecución de estos comandos guardará los últimos 30 minutos de registros relacionados con Docker en /tmp/logs.txt. Debes inspeccionar estos registros para determinar qué contenedores o imágenes se borraron.  

En el caso de las imágenes eliminadas, es probable que puedas recuperarlas de un registro como Docker Hub. Un comando como éste debería funcionar:  

docker pull <image_name>

Y para contenedores borradossiempre puedes volver a crearlos si se basaban en imágenes persistentes:

docker run --name <container_name> <image_name>

Alternativamente, puedes restaurar a partir de copias de seguridad si están disponibles, que pueden utilizarse para recuperar tanto los datos del volumen como los del contenedor. En el futuro, considera la posibilidad de utilizar herramientas de instantáneas de volumen para evitar la pérdida de datos.  

Sin embargo, la mejor estrategia es inspeccionar los recursos que se eliminarán antes de ejecutar un comando de poda y sólo proceder si estás absolutamente seguro de que no afectará a tu flujo de trabajo.  

Resumen de Docker Prune  

En conclusión, la familia de comandos docker prune es una forma potente de recuperar espacio en disco, pero conlleva el riesgo de borrar accidentalmente recursos que necesitas, lo que puede provocar la pérdida de datos. Este riesgo es aún mayor si se utilizan las banderas opcionales -a -f, que eliminarán todo a la fuerza.  

No obstante, la poda sigue siendo un método al que recurrir para mantener tu sistema limpio y organizado.  

Sólo tienes que ser prudente, sobre todo en entornos de producción. Utiliza comandos como docker ps -a, docker images, y docker volume ls antes de la poda para listar todos los contenedores, imágenes y volúmenes. Ejecuta el comando de poda sólo cuando estés seguro de que te parece bien eliminar los recursos de la lista (suponiendo que no los esté utilizando un contenedor en ejecución).

Si quieres aprender más sobre Docker, la contenedorización y la orquestación de contenedores, consulta estos cursos en DataCamp:

Preguntas frecuentes

¿Es segura la poda docker?

En general, sí, pero debe utilizarse con precaución. Sólo elimina los recursos que no están en uso, pero ejecutarlo sin comprobarlo puede dar lugar a eliminaciones accidentales, especialmente en entornos de producción. Las banderas adicionales como -a -f eliminarán forzosamente todos los recursos no utilizados. 

¿Cuál es la diferencia entre docker prune y docker rm?

docker prune elimina todos los recursos no utilizados de un tipo concreto, mientras que docker rm se utiliza para eliminar manualmente contenedores o imágenes concretas.

¿El sistema docker prune elimina todo?

No, docker system prune elimina los contenedores, redes, imágenes y caché de compilación no utilizados, pero no elimina los volúmenes con nombre a menos que se especifique la bandera --volumes después del comando. 

¿Qué es una imagen colgante en Docker?

Una imagen colgante es una imagen que no está etiquetada ni referenciada por ningún contenedor. Suelen ser imágenes intermedias sobrantes de las compilaciones y se pueden eliminar de forma segura con el comando docker image prune


Dario Radečić's photo
Author
Dario Radečić
LinkedIn
Científico de Datos Senior con base en Croacia. Top Tech Writer con más de 700 artículos publicados, generando más de 10M de visitas. Autor del libro Automatización del aprendizaje automático con TPOT.
Temas

¡Aprende más sobre Docker con estos cursos!

curso

Introduction to Docker

4 hr
24.5K
Gain an introduction to Docker and discover its importance in the data professional’s toolkit. Learn about Docker containers, images, and more.
Ver detallesRight Arrow
Comienza el curso
Ver másRight Arrow
Relacionado

blog

Contratos de datos desmitificados: Todo lo que necesitas saber

Lograr la escalabilidad en los sistemas de datos distribuidos y reducir los errores.
Mike Shakhomirov's photo

Mike Shakhomirov

24 min

tutorial

Git Prune: Qué es la poda Git y cómo usarla

La poda Git es un comando Git que elimina del repositorio los objetos que ya no son accesibles desde ninguna confirmación o rama, ayudando a liberar espacio en disco.
François Aubry's photo

François Aubry

5 min

tutorial

Cómo instalar y configurar MySQL en Docker

Aprende a instalar y configurar la base de datos MySQL dentro de contenedores Docker. El tutorial incluye conceptos como conectarse a servidores MySQL, ejecutar clientes MySQL para conectarse a contenedores, etc.
Bex Tuychiev's photo

Bex Tuychiev

12 min

tutorial

Cuentas de almacenamiento Azure: Tutorial paso a paso para principiantes

Esta guía te enseña a configurar y gestionar las Cuentas de Almacenamiento de Azure, paso a paso. También explora opciones avanzadas de configuración para un rendimiento óptimo y una optimización de costes.
Anneleen Rummens's photo

Anneleen Rummens

20 min

tutorial

Cómo escribir un Bash Script: Un sencillo tutorial de Bash Scripting

Descubre los fundamentos de las secuencias de comandos bash y aprende a escribir una secuencia de comandos bash.
Kurtis Pykes 's photo

Kurtis Pykes

5 min

tutorial

Jerarquías de Power BI: Guía completa

Aprende a crear, editar, eliminar e implementar jerarquías en Power BI.
Joleen Bothma's photo

Joleen Bothma

11 min

Ver másVer más