¿Volúmenes de host montados en Docker huérfanos?
Acabo de inspeccionar mi carpeta /var/lib/docker/volumes y descubrí que está repleta de carpetas nombradas como UUID Docker, cada una de las cuales contiene una configuración.archivo json con contenido similar a
{"ID":"UUID","Path":"/path/to/mounted/volume","IsBindMount":true,"Writable":true}
Donde
/path/to/mounted/volume
Es la ruta a la carpeta en el host que se montó en un contenedor docker con el conmutador-v en algún momento. Tengo tales carpetas que se remontan al comienzo de mis experimentos con Docker, es decir, hace aproximadamente 3 semanas.
Los contenedores en cuestión fueron detenidos y docker rm'ed hace mucho tiempo, así que no puedo ver que esas entradas no están más allá de su fecha de venta. Esto plantea la pregunta-es el sobrante que estoy viendo un error o es necesario descartar manualmente tales entradas de /var/lib/docker/volumes?
3 answers
Para Docker 1.9 y arriba hay una forma nativa:
Listar todos los volúmenes huérfanos con
$ docker volume ls -qf dangling=true
Eliminarlos todos con
$ docker volume rm $(docker volume ls -qf dangling=true)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-11 10:46:05
De la guía del usuario de Docker:
Si elimina contenedores que montan volúmenes, incluido el contenedor dbdata inicial o los contenedores db1 y db2 posteriores, los volúmenes no se eliminarán. Para eliminar el volumen del disco, debe llamar explícitamente a docker rm-v contra el último contenedor con una referencia al volumen. Esto le permite actualizar o migrar eficazmente volúmenes de datos entre contenedores. - fuente
Este es un comportamiento intencional para evite la pérdida accidental de datos. Puede utilizar una herramienta como docker-cleanup-volumes para limpiar los volúmenes no utilizados.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-07 07:34:36
Para Docker 1.13+ y los números de versión ce/ee 17+, utilice el volume prune
command
docker volume prune
A diferencia de la consulta dangling=true
, esto no eliminará los volúmenes basados en controladores "remotos".
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-19 03:15:04