curso
Poda Docker: Una guía completa con ejemplos prácticos
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:
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
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:
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:
Imagen 4 - Mensaje de salida de la poda de contenedores
Y así, sin más, ya no hay contenedores parados:
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:
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:
Imagen 7 - Mensaje de salida de la poda de imágenes
Después, no queda ninguna imagen en Docker Desktop:
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
:
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:
Imagen 10 - Mensaje de salida de la poda de volumen
Ahora ya no quedan volúmenes:
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:
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:
Imagen 13 - Mensaje de salida de la poda de red
Todas las redes asociadas a los contenedores que se ejecutaban anteriormente han desaparecido:
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:
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:
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
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
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
.
¡Aprende más sobre Docker con estos cursos!
curso
Intermediate Docker
programa
Containerization and Virtualization
blog
Contratos de datos desmitificados: Todo lo que necesitas saber

Mike Shakhomirov
24 min
tutorial
Git Prune: Qué es la poda Git y cómo usarla

François Aubry
5 min
tutorial
Cómo instalar y configurar MySQL en Docker
tutorial
Cuentas de almacenamiento Azure: Tutorial paso a paso para principiantes

Anneleen Rummens
20 min
tutorial
Cómo escribir un Bash Script: Un sencillo tutorial de Bash Scripting
tutorial