Contenido
Tutorial de docker volume: crear, listar, inspeccionar y eliminar volúmenes
docker volume gestiona los volúmenes. Para los conceptos y el uso, consulta Volúmenes y persistencia de datos.
Subcomandos
| Comando | Descripción | Opciones habituales |
|---|---|---|
docker volume create [nombre] | Crea un volumen (si no das nombre, se genera uno aleatorio) | --label clave=valor, -d driver, -o opción |
docker volume ls | Lista los volúmenes | -f filtro, -q solo nombres, --format |
docker volume inspect nombre | Muestra información detallada | -f plantilla |
docker volume rm nombre... | Elimina volúmenes (no se pueden eliminar los que están en uso) | -f |
docker volume prune | Elimina los volúmenes anónimos sin usar | -a incluye los volúmenes con nombre, -f sin confirmación, --filter |
Filtros de docker volume ls -f: dangling=true (sin usar por ningún contenedor), name=parte-del-nombre, label=clave=valor y driver=local.
Crear, escribir y leer
$ docker volume create mydata
mydata
$ docker volume ls
DRIVER VOLUME NAME
local 2bc47e5efc92fb9cbc751a0d25853c6c800d4e4806c256fb7d68fa9dff112fcd
local 6729482c30a3f652c14f542c6f341c811f087fc9626efcfdf00a49a5ae721e2c
local 78297657b68403b39f39940496ce3faf49e6257a11d5103d043077a36261236a
local a23af26d1da49e018edecb6e29f9be3875fb02e8c50510a40fbb5cf49da94f81
local mydata
$ docker volume inspect mydata
[
{
"CreatedAt": "2026-10-13T05:28:56Z",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/mydata/_data",
"Name": "mydata",
"Options": null,
"Scope": "local"
}
]
$ docker run --rm -v mydata:/data alpine:3.23 sh -c "echo saved > /data/a.txt"
$ docker run --rm -v mydata:/data alpine:3.23 cat /data/a.txt
saved
- En
ls, además demydata, aparecen varios volúmenes anónimos con nombres largos que dejaron contenedores anteriores (por ejemplo, creados automáticamente por la declaraciónVOLUMEde la imagenpostgres). - El
Mountpointdeinspectes la ubicación real de los datos en el host de Docker. - Dos contenedores distintos montaron
mydatauno tras otro, y el segundo leyó el archivo que escribió el primero: los datos están en el volumen, independientes del contenedor.
Encontrar y limpiar volúmenes huérfanos
$ docker run --rm -v /tmpdata alpine:3.23 true
$ docker volume ls -f dangling=true
DRIVER VOLUME NAME
local 2bc47e5efc92fb9cbc751a0d25853c6c800d4e4806c256fb7d68fa9dff112fcd
local 6729482c30a3f652c14f542c6f341c811f087fc9626efcfdf00a49a5ae721e2c
local 78297657b68403b39f39940496ce3faf49e6257a11d5103d043077a36261236a
local a23af26d1da49e018edecb6e29f9be3875fb02e8c50510a40fbb5cf49da94f81
local mydata
$ docker volume prune -f
Deleted Volumes:
a23af26d1da49e018edecb6e29f9be3875fb02e8c50510a40fbb5cf49da94f81
6729482c30a3f652c14f542c6f341c811f087fc9626efcfdf00a49a5ae721e2c
78297657b68403b39f39940496ce3faf49e6257a11d5103d043077a36261236a
2bc47e5efc92fb9cbc751a0d25853c6c800d4e4806c256fb7d68fa9dff112fcd
Total reclaimed space: 348.9MB
-v /tmpdataindica solo una ruta dentro del contenedor, sin nombre, así que Docker crea un volumen anónimo.--rmtambién lo elimina al eliminar el contenedor.dangling=truelista todos los volúmenes que ningún contenedor usa en este momento, incluido el volumen con nombremydata.prune -feliminó solo los cuatro volúmenes anónimos y liberó 348.9 MB; el volumen con nombremydatase conservó.
Etiquetas
$ docker volume create --label env=dev tagged
tagged
$ docker volume ls -f label=env=dev
DRIVER VOLUME NAME
local tagged
$ docker volume rm mydata tagged
mydata
tagged
Añade etiquetas a los volúmenes para filtrarlos y limpiarlos por proyecto o entorno, por ejemplo con docker volume prune --filter label=env=dev.
Capítulos relacionados
Ejercicios
Ejercicio: crea un volumen con la etiqueta project=demo y después, con un solo comando, elimina todos los volúmenes sin usar que tengan esa etiqueta, incluidos los volúmenes con nombre.
Respuesta
docker volume create --label project=demo demo_data
docker volume prune -a -f --filter label=project=demo
-a incluye los volúmenes con nombre en la limpieza, y --filter la limita a los volúmenes con esta etiqueta.
Preguntas frecuentes
¿Tengo que ejecutar docker volume create primero?
No. docker run -v nombre:/ruta crea el volumen automáticamente si no existe. Crearlo antes te permite añadir etiquetas u opciones del driver.
¿docker volume prune borrará mi base de datos?
Desde Docker 23, docker volume prune solo elimina los **volúmenes anónimos que no usa ningún contenedor**. Los volúmenes con nombre se conservan. docker volume prune -a elimina también los volúmenes con nombre sin usar; hay un ejemplo práctico en [Limpiar espacio en disco](/es/docker/cleanup/).
¿Cómo hago una copia de seguridad de un volumen?
Usa un contenedor temporal que monte a la vez el volumen y un directorio del host, y empaqueta los datos con tar. Hay un ejemplo en [Volúmenes y persistencia de datos](/es/docker/volumes/).
Actualizado 14 de octubre de 2026