Purgar (prune) datos no utilizados de Docker sin eliminar volúmenes
En el paso anterior, vimos que docker system prune
por defecto no elimina volúmenes. Los volúmenes se utilizan para persistir los datos generados y utilizados por los contenedores de Docker. Eliminar volúmenes de forma no intencionada puede provocar pérdida de datos.
En este paso, demostraremos cómo funciona docker system prune
sin eliminar volúmenes. Crearemos un volumen, ejecutaremos un contenedor que lo utilice, detendremos el contenedor y luego purgaremos (prune) el sistema. Observaremos que el volumen permanece después de la purga.
Primero, creemos un volumen con nombre. Los volúmenes con nombre son creados y gestionados explícitamente por Docker.
docker volume create myvolume
Debería ver el nombre del volumen creado como salida.
Ahora, ejecutemos un contenedor simple que utilice este volumen. Utilizaremos la imagen ubuntu
. Si no la tiene localmente, Docker la descargará.
docker run -d --name mycontainer -v myvolume:/app ubuntu sleep 60
Este comando ejecuta un contenedor ubuntu
en modo desatendido (-d
), lo nombra mycontainer
, monta el myvolume
en el directorio /app
dentro del contenedor y mantiene el contenedor en ejecución durante 60 segundos utilizando el comando sleep 60
.
Compruebe que el contenedor está en ejecución:
docker ps
Debería ver mycontainer
en la lista.
Ahora, detenga el contenedor:
docker stop mycontainer
El contenedor se detendrá, pero seguirá existiendo en un estado finalizado.
Verifique que el contenedor está detenido:
docker ps -a
Debería ver mycontainer
con un estado de "Exited".
Ahora, listemos los volúmenes:
docker volume ls
Debería ver myvolume
en la lista.
Ahora, ejecute docker system prune
de nuevo. Recuerde, por defecto, no elimina volúmenes.
docker system prune -f
Observe la salida. Debería indicar que el contenedor finalizado fue eliminado, pero no debería mencionar la eliminación del volumen.
Verifique que el contenedor ha desaparecido:
docker ps -a
mycontainer
ya no debería estar en la lista.
Finalmente, verifique que el volumen todavía existe:
docker volume ls
Todavía debería ver myvolume
en la lista. Esto confirma que docker system prune
por defecto conserva los volúmenes.