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
bashPor 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
bashRecomendació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
bashOpciones 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>"
bashA 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 comoh
(horas),m
(minutos) os
(segundos).
docker <command> prune --filter "until=<duration>"
bashEjemplo: eliminar todos los contenedores detenidos que tengan más de 24 horas.
docker container prune --filter "until=24h"
bashlabel
: filtra recursos en función de sus etiquetas de Docker.
docker <command> prune --filter "label=<label>"
bashEjemplo: limpiar todos los volúmenes sin utilizar que tengan la etiqueta mylabel
.
docker volume prune --filter "label=mylabel"
bashdangling
: filtra recursos que ya no están asociados con ningún contenedor.
docker <command> prune --filter "dangling=true"
bashEjemplo: eliminar todas las imágenes que ya no están en uso (dangling).
docker image prune --filter "dangling=true"
bashAdemás de los filtros mencionados, también existen opciones de filtros más específicos según el tipo de recurso:
before
ysince
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
bashSustituye {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
bashdocker 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
bashEste 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]
bashA 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
bashEliminar 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
bashAsegú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
bashEste 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
bashEste 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]
bashDocker 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.
Si acabas de empezar a trabajar con Docker y necesitas aprender lo básico, te recomendamos nuestro tutorial de Docker.