La Guía Esencial de Comandos para la Gestión de Volúmenes de Docker
Aprende los comandos de volúmenes de Docker para crear, listar, inspeccionar, montar, respaldar, eliminar y limpiar datos persistentes.
La Guía Esencial de Comandos de Gestión de Volúmenes en Docker
Los comandos de gestión de volúmenes de Docker son importantes tan pronto como tu contenedor escribe datos que te importan. La capa de escritura de un contenedor desaparece cuando eliminas el contenedor, pero un volumen de Docker puede conservar archivos de base de datos, cargas, datos de caché o el estado de la aplicación a través de reconstrucciones de contenedores.
Esta guía te muestra los comandos principales de docker volume, cómo adjuntar volúmenes a contenedores y dónde los comandos de limpieza pueden sorprenderte.
¿Qué son los Volúmenes de Docker?
Los volúmenes de Docker son objetos de almacenamiento gestionados por Docker. Viven fuera de la capa de escritura del contenedor, generalmente en una ubicación gestionada por Docker en el host cuando usas el controlador local predeterminado. Un volumen con nombre permanece disponible después de detener, eliminar o recrear el contenedor que lo usó.
Los volúmenes son útiles porque proporcionan:
- Persistencia: Los datos sobreviven al reemplazo del contenedor.
- Aislamiento: Los datos de la aplicación están separados de la imagen y la capa de escritura.
- Soporte de controladores: Los controladores de volumen pueden usar discos locales, almacenamiento en red o backends de almacenamiento específicos de la plataforma.
- Claridad operativa: Los volúmenes con nombre son más fáciles de inspeccionar, respaldar y reutilizar que las capas anónimas del contenedor.
Comandos Principales de docker volume
El comando docker volume es la interfaz principal para crear, listar, inspeccionar y eliminar volúmenes.
docker volume create
Crear un volumen con nombre:
docker volume create my-app-data
Crear un volumen con nombre generado por Docker:
docker volume create
También puedes pasar opciones del controlador cuando usas una configuración no predeterminada:
docker volume create --driver local my-app-data
docker volume ls
Listar volúmenes:
docker volume ls
Mostrar solo nombres:
docker volume ls -q
Filtrar volúmenes huérfanos:
docker volume ls --filter dangling=true
dangling=true significa que Docker no ve el volumen como referenciado por un contenedor. No significa que los datos no sean importantes.
docker volume inspect
Inspeccionar un volumen:
docker volume inspect my-app-data
Para un volumen local, la salida se ve similar a esto:
[
{
"CreatedAt": "2026-05-23T10:00:00Z",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/my-app-data/_data",
"Name": "my-app-data",
"Options": null,
"Scope": "local"
}
]
El Mountpoint es útil para solucionar problemas, pero evita editar archivos allí directamente mientras los contenedores estén usando el volumen. Deja que la aplicación o un contenedor de mantenimiento controlado escriban los datos.
docker volume rm
Eliminar uno o más volúmenes:
docker volume rm my-app-data
Docker no eliminará un volumen mientras algún contenedor lo referencie, incluso si ese contenedor está detenido. Encuentra y elimina esos contenedores primero:
docker ps -a --filter volume=my-app-data
docker rm <nombre-o-id-del-contenedor>
docker volume rm my-app-data
Este comando elimina los datos del volumen. Respáldalos primero si los datos son importantes.
docker volume prune
Prune elimina volúmenes locales no utilizados. En versiones actuales de Docker, docker volume prune elimina volúmenes anónimos no utilizados de forma predeterminada. Usa --all si también deseas eliminar volúmenes con nombre no utilizados.
Eliminar volúmenes anónimos no utilizados:
docker volume prune
Omitir la solicitud de confirmación:
docker volume prune --force
Eliminar todos los volúmenes locales no utilizados, incluidos los volúmenes con nombre:
docker volume prune --all
Usa etiquetas para hacer la limpieza más segura:
docker volume create --label app=myapp myapp-cache
docker volume prune --filter label=app=myapp
Las operaciones de prune eliminan datos permanentemente. Verifica qué contiene un volumen antes de eliminar datos de aplicaciones con nombre.
Montar Volúmenes con Contenedores
Adjunta volúmenes cuando creas un contenedor. Docker puede crear el volumen con nombre automáticamente si no existe.
Usando -v
docker run --name my-postgres \
-v pgdata:/var/lib/postgresql/data \
-d postgres
Aquí, pgdata es el nombre del volumen y /var/lib/postgresql/data es la ruta dentro del contenedor.
Usando --mount
--mount es más explícito y más fácil de leer en scripts:
docker run --name my-redis \
--mount type=volume,source=redisdata,target=/data \
-d redis
Ambas formas son válidas. Usa --mount cuando quieras una sintaxis clave-valor más clara, especialmente con opciones de montaje adicionales.
Respaldar y Restaurar un Volumen
Los volúmenes de Docker son almacenamiento persistente, pero no son copias de seguridad. Un patrón simple de respaldo es ejecutar un contenedor temporal que monte el volumen y escriba un archivo comprimido en el directorio actual:
docker run --rm \
-v my-app-data:/data:ro \
-v "$PWD":/backup \
alpine \
tar czf /backup/my-app-data.tgz -C /data .
Restaurar en un volumen vacío:
docker volume create my-app-data-restored
docker run --rm \
-v my-app-data-restored:/data \
-v "$PWD":/backup \
alpine \
tar xzf /backup/my-app-data.tgz -C /data
Para bases de datos, prefiere herramientas de respaldo nativas de la base de datos cuando la consistencia sea importante. Un archivo del sistema de archivos de un volumen de base de datos en vivo puede no ser seguro a menos que la base de datos esté detenida o admita ese método de respaldo.
Mejores Prácticas para la Gestión de Volúmenes de Docker
- Usa volúmenes con nombre para datos que planeas conservar.
- Etiqueta los volúmenes que pertenecen a una aplicación o entorno.
- Inspecciona los volúmenes antes de eliminarlos o limpiarlos.
- Respaldar volúmenes importantes fuera del host de Docker.
- Evita almacenar datos irremplazables solo en un volumen anónimo.
- Prueba las restauraciones, no solo los respaldos.
- Usa controladores de volumen cuando necesites almacenamiento fuera del host local de Docker.
Conclusión
Usa volúmenes con nombre de Docker para el estado que deseas conservar, inspecciónalos antes de eliminar cualquier cosa y trata prune como un comando de limpieza con riesgo real de pérdida de datos. El flujo de trabajo diario es simple: crea o deja que Docker cree el volumen, móntalo con docker run, inspecciónalo al solucionar problemas, respáldalo cuando sea importante y elimínalo solo después de que ningún contenedor lo referencie.