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

ComandoDescripciónOpciones 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 lsLista los volúmenes-f filtro, -q solo nombres, --format
docker volume inspect nombreMuestra 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 pruneElimina 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 de mydata, aparecen varios volúmenes anónimos con nombres largos que dejaron contenedores anteriores (por ejemplo, creados automáticamente por la declaración VOLUME de la imagen postgres).
  • El Mountpoint de inspect es la ubicación real de los datos en el host de Docker.
  • Dos contenedores distintos montaron mydata uno 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 /tmpdata indica solo una ruta dentro del contenedor, sin nombre, así que Docker crea un volumen anónimo. --rm también lo elimina al eliminar el contenedor.
  • dangling=true lista todos los volúmenes que ningún contenedor usa en este momento, incluido el volumen con nombre mydata.
  • prune -f eliminó solo los cuatro volúmenes anónimos y liberó 348.9 MB; el volumen con nombre mydata se 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