Guía práctica de volúmenes Docker: 5 ejemplos para acabar con la pérdida de datos en contenedores

La última línea del terminal decía: «Database import completed successfully». Tras cuatro horas peleándome con ello, por fin importé veinte mil registros de prueba al contenedor MySQL. Probé un par de endpoints de la API y todo pasó.
A la mañana siguiente, como de costumbre, ejecuté docker ps para ver el estado de los contenedores. Vacío. ¿Anoche olvidé arrancarlos? Corrí docker ps -a para ver todos los contenedores. Tampoco aparecían. Entonces recordé: antes de dormir, para liberar espacio en disco, ejecuté docker system prune -a.
Se acabó. Todos los datos, fuera. Veinte mil registros de prueba, cuatro horas de trabajo, reducidos a cero.
Llevaba tres semanas aprendiendo Docker. Sabía que los contenedores arrancan rápido y aíslan bien el entorno, pero no conocía su talón de Aquiles: los contenedores no están pensados para almacenar datos. Eliminas el contenedor y los datos desaparecen; lo reinicias y la configuración vuelve al estado inicial.
En este artículo, con cinco casos prácticos paso a paso, aprenderás a usar Docker Volume (volumen de datos) para sacar los datos del contenedor y que no desaparezcan con su ciclo de vida.
La verdad sobre la pérdida de datos en contenedores
¿Por qué al eliminar el contenedor desaparecen los datos?
Docker usa un sistema de archivos por capas. Imagina un pastel de capas: la capa inferior es la capa de imagen (solo lectura, compartida por todos los contenedores); la capa superior es la capa del contenedor (escritura, exclusiva de cada contenedor). Los archivos que creas, la configuración que modificas y los datos que importas se escriben en esta capa superior.
Aquí está la clave: al eliminar el contenedor, esta capa de escritura se destruye junto con él.
¿No te lo crees? Prueba esto:
# Inicia un contenedor Alpine y escribe un archivo
docker run -it --name test-container alpine sh
# Dentro del contenedor
echo "重要数据" > /tmp/data.txt
exit
# Elimina el contenedor
docker rm test-container
# Intenta recuperar los datos
docker run -it --name test-container alpine sh
cat /tmp/data.txt # Error: No such file or directory
Los datos desaparecen al instante, sin ninguna advertencia.
Este diseño es bastante razonable: los contenedores están pensados para aplicaciones sin estado. Piensa en Nginx o servidores API: no necesitan guardar datos; cada arranque es igual. Pero ¿bases de datos, Redis o servicios de subida de archivos? Esos sí deben conservar los datos.
La solución oficial de Docker es Volume (volumen de datos): guardar los datos fuera del contenedor y desacoplar por completo la vida del contenedor de la supervivencia de los datos.
¿Qué es Volume? Cómo salva tus datos
La esencia de Volume: el disco duro externo del contenedor
Volume es como conectar un disco duro externo al contenedor. Los datos no se escriben dentro del contenedor, sino en un directorio del host que luego se monta en una ruta interna. El contenedor ve /var/lib/mysql, pero los datos reales están en /var/lib/docker/volumes/mysql-data/_data del host.
¿Eliminaste el contenedor? No pasa nada: los datos siguen en el host. Arrancas otro contenedor, montas el mismo Volume y los datos vuelven.
Docker ofrece tres formas de montaje; al principio es fácil confundirlas:
| Tipo de montaje | Ubicación de los datos | Escenario | Gestión |
|---|---|---|---|
| Volume | Directorio gestionado por Docker (/var/lib/docker/volumes/) | Persistencia de bases de datos, datos en producción | Comandos unificados de Docker |
| Bind Mount | Cualquier ruta del host | Montar código o configuración en desarrollo | Gestión manual de rutas |
| tmpfs | Memoria | Datos temporales, información sensible (sin escribir en disco) | Se vacía al detener el contenedor |
Al principio yo también confundía Volume y Bind Mount; me parecía que ambos «montaban un directorio del host». Hasta que me equivoqué: monté el directorio de datos de MySQL con Bind Mount, borré el directorio del host por error y el contenedor MySQL se cayó.
Volume lo gestiona Docker por completo: no tienes que preocuparte por rutas, permisos ni estrategia de copias de seguridad. ¿Quieres saber dónde están los datos? Consulta con docker volume inspect. ¿Quieres migrarlos? Los comandos docker volume lo resuelven. Por eso la documentación oficial recomienda Volume en lugar de Bind Mount.
¿Dónde se almacenan realmente los datos del Volume?
En Linux, todos los Volume viven por defecto en:
/var/lib/docker/volumes/<volume-name>/_data/
Si usas Mac o Windows, no busques esa ruta: Docker Desktop corre en una máquina virtual y no la verás directamente. Pero puedes consultar los detalles con docker volume inspect.
5 ejemplos para dominar Volume
Ya está la teoría; vamos a practicar. Estos cinco ejemplos van de lo básico a lo avanzado. Si los sigues uno a uno, lo entenderás de verdad.
Ejemplo 1: crea tu primer Volume con nombre
Empecemos por lo más simple: un Volume vacío.
# Crea un Volume llamado my-data
docker volume create my-data
# Lista todos los Volume
docker volume ls
# Muestra los detalles del Volume
docker volume inspect my-data
Salida esperada (comando inspect):
[
{
"CreatedAt": "2025-12-17T12:00:00Z",
"Driver": "local",
"Mountpoint": "/var/lib/docker/volumes/my-data/_data",
"Name": "my-data"
}
]
¿Ves Mountpoint? Ahí es donde se guardan realmente los datos.
Ejemplo 2: persistencia de sitio estático con Nginx
Escenario: desarrollas un sitio estático y cada vez que cambias el código reinicias el contenedor Nginx. Pero en cada reinicio desaparecen las imágenes subidas y los logs.
Solución: montar el directorio /usr/share/nginx/html de Nginx en un Volume.
# Crea un Volume para el contenido del sitio
docker volume create nginx-html
# Inicia Nginx montando el Volume
docker run -d \
--name my-nginx \
-p 8080:80 \
-v nginx-html:/usr/share/nginx/html \
nginx:latest
# Entra al contenedor y crea una página de prueba
docker exec my-nginx bash -c 'echo "<h1>Hello Docker Volume!</h1>" > /usr/share/nginx/html/index.html'
# Prueba el acceso (navegador en http://localhost:8080 o curl)
curl http://localhost:8080
Ahora elimina el contenedor:
docker rm -f my-nginx
Arranca un contenedor nuevo montando el mismo Volume:
docker run -d \
--name my-nginx-v2 \
-p 8080:80 \
-v nginx-html:/usr/share/nginx/html \
nginx:latest
# Vuelve a acceder: el contenido sigue ahí
curl http://localhost:8080
Los datos no se perdieron. Esa es la magia de Volume.
Ejemplo 3: persistencia de datos con MySQL (nivel práctico)
Es el caso más habitual. Despliegas MySQL en contenedor y los datos deben persistir.
# Crea un Volume dedicado a MySQL
docker volume create mysql-data
# Inicia el contenedor MySQL
docker run -d \
--name mysql-demo \
-e MYSQL_ROOT_PASSWORD=my-secret-pw \
-e MYSQL_DATABASE=testdb \
-p 3306:3306 \
-v mysql-data:/var/lib/mysql \
mysql:8.0
# Espera a que MySQL arranque (unos 10 segundos)
sleep 10
# Conéctate a MySQL y crea una tabla de prueba
docker exec -it mysql-demo mysql -uroot -pmy-secret-pw testdb -e "
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50)
);
INSERT INTO users (name) VALUES ('Alice'), ('Bob');
"
# Consulta los datos
docker exec -it mysql-demo mysql -uroot -pmy-secret-pw testdb -e "SELECT * FROM users;"
Ahora elimina el contenedor (simula un borrado accidental):
docker rm -f mysql-demo
Vuelve a arrancar MySQL montando el mismo Volume:
docker run -d \
--name mysql-demo-v2 \
-e MYSQL_ROOT_PASSWORD=my-secret-pw \
-p 3306:3306 \
-v mysql-data:/var/lib/mysql \
mysql:8.0
# Espera el arranque
sleep 10
# Consulta los datos: siguen ahí
docker exec -it mysql-demo-v2 mysql -uroot -pmy-secret-pw testdb -e "SELECT * FROM users;"
Punto clave: el directorio de datos de MySQL es /var/lib/mysql; esa es la ruta que debes montar. Cada base de datos usa una ruta distinta: Redis usa /data, PostgreSQL usa /var/lib/postgresql/data.
Ejemplo 4: configuración de persistencia con Redis
Redis guarda los datos en memoria por defecto, pero puedes configurar persistencia en disco (RDB o AOF).
# Crea un Volume para datos de Redis
docker volume create redis-data
# Inicia Redis con persistencia AOF
docker run -d \
--name redis-demo \
-p 6379:6379 \
-v redis-data:/data \
redis:latest redis-server --appendonly yes
# --appendonly yes activa persistencia AOF
# Escribe datos de prueba
docker exec -it redis-demo redis-cli SET mykey "Hello Redis Volume"
# Lee los datos
docker exec -it redis-demo redis-cli GET mykey
Elimina el contenedor:
docker rm -f redis-demo
Vuelve a arrancarlo:
docker run -d \
--name redis-demo-v2 \
-p 6379:6379 \
-v redis-data:/data \
redis:latest redis-server --appendonly yes
# Los datos siguen ahí
docker exec -it redis-demo-v2 redis-cli GET mykey
Atención: debes añadir --appendonly yes; si no, Redis solo guarda en memoria y los datos se pierden al reiniciar el contenedor.
Ejemplo 5: Volume compartido entre varios contenedores
Escenario: un contenedor Nginx sirve archivos estáticos y otro contenedor de aplicación genera logs; ambos comparten el mismo Volume.
# Crea un Volume compartido
docker volume create shared-logs
# Inicia el contenedor de aplicación y escribe logs
docker run -d \
--name app-writer \
-v shared-logs:/logs \
alpine sh -c "while true; do echo $(date) >> /logs/app.log; sleep 2; done"
# Inicia Nginx y lee los logs
docker run -d \
--name log-reader \
-p 8080:80 \
-v shared-logs:/usr/share/nginx/html:ro \
nginx:latest
# :ro significa montaje de solo lectura (read-only), para evitar que Nginx modifique los logs
# Espera unos segundos a que app-writer escriba logs
sleep 5
# Accede al archivo de log (navegador en http://localhost:8080/app.log)
curl http://localhost:8080/app.log
Puntos clave:
- Un Volume puede montarse en varios contenedores a la vez
- El sufijo
:roactiva el modo solo lectura y mejora la seguridad - En producción puedes usar esta arquitectura de contenedor de recolección de logs + contenedor de aplicación
Comandos de gestión de Volume
Después de los cinco ejemplos seguro te preguntas: «¿cómo veo, elimino o limpio estos Volume?»
Aquí tienes la chuleta completa:
# 1. Crear Volume
docker volume create <volume-name>
# 2. Listar todos los Volume
docker volume ls
# 3. Ver detalles del Volume (incluye la ruta de montaje)
docker volume inspect <volume-name>
# 4. Eliminar un Volume concreto
docker volume rm <volume-name>
# Nota: si un contenedor lo está usando, dará error
# 5. Eliminar todos los Volume sin usar (liberar espacio)
docker volume prune
# Pide confirmación; escribe y para continuar
# 6. Forzar eliminación de Volume sin usar (sin confirmación)
docker volume prune -f
Problema habitual: al eliminar un Volume aparece «volume is in use»
Significa que algún contenedor lo está usando. Solución:
# Ver qué contenedor lo usa
docker ps -a --filter volume=<volume-name>
# Detén y elimina el contenedor primero
docker rm -f <container-name>
# Luego elimina el Volume
docker volume rm <volume-name>
Ver cuánto espacio ocupan los Volume
¿Quieres saber cuánto disco ocupa un Volume? Prueba esto:
# Usuarios Linux/Mac
docker volume inspect <volume-name> --format '{{ .Mountpoint }}' | xargs du -sh
# Ejemplo de salida: 512M /var/lib/docker/volumes/mysql-data/_data
Bind Mount vs Volume: ¿cuál usar?
Es la duda más común al empezar. Yo también me liaba y los mezclaba sin criterio.
Recuerda una frase: datos de producción con Volume, código de desarrollo con Bind Mount.
En concreto:
| Escenario | Recomendado | Motivo |
|---|---|---|
| Bases de datos MySQL/PostgreSQL | Volume | Gestionado por Docker, copias de seguridad sencillas, buen rendimiento |
| Persistencia Redis/MongoDB | Volume | Igual que arriba |
| Logs, archivos subidos | Volume | Datos seguros; eliminar el contenedor no afecta |
| Montar código fuente en desarrollo | Bind Mount | Los cambios se reflejan al instante, sin reiniciar el contenedor |
| Montar configuración (nginx.conf) | Bind Mount | Fácil de editar y probar |
| Datos temporales, caché | tmpfs | Máximo rendimiento, no ocupa disco |
Comparación de sintaxis
# Volume (recomendado para datos persistentes)
docker run -v my-volume:/data redis:latest
# Bind Mount (recomendado en desarrollo)
docker run -v /Users/me/code:/app node:latest
# Nueva sintaxis --mount (más explícita, recomendada en producción)
docker run --mount type=volume,source=my-volume,target=/data redis:latest
docker run --mount type=bind,source=/Users/me/code,target=/app node:latest
Árbol de decisión
Ante un caso nuevo, ¿no sabes cuál elegir? Hazte tres preguntas:
-
¿Los datos deben conservarse a largo plazo?
Sí → Volume; no → tmpfs -
¿Necesitas modificar los datos directamente en el host?
Sí → Bind Mount; no → Volume -
¿Es entorno de producción o de desarrollo?
Producción → Volume; desarrollo → Bind Mount
Comparación con casos reales
Mi entorno de desarrollo:
# En desarrollo: código con Bind Mount, base de datos con Volume
docker run -d \
--name dev-app \
-v $(pwd)/src:/app/src \ # Bind Mount: cambios de código al instante
-v app-uploads:/app/uploads \ # Volume: archivos subidos por usuarios
-v postgres-data:/var/lib/postgresql/data \ # Volume: datos de la base de datos
my-app:dev
Mi entorno de producción:
# En producción: todo con Volume
docker run -d \
--name prod-app \
-v app-uploads:/app/uploads \
-v postgres-data:/var/lib/postgresql/data \
my-app:latest
# El código ya va empaquetado en la imagen; no hace falta montarlo
Preguntas frecuentes y mejores prácticas
FAQ: trampas que he pisado y cómo resolverlas
P1: ¿Se pierden los datos del Volume?
No. Mientras no ejecutes manualmente docker volume rm, los datos se conservan. Incluso si reinicias el host, siguen ahí.
Pero ojo: docker system prune -a --volumes elimina todos los Volume sin usar. ¡Úsalo con cuidado!
P2: ¿Qué pasa si el Volume no existe al arrancar el contenedor?
Docker lo crea automáticamente. Prueba esto:
# No hace falta docker volume create antes; ejecuta directamente
docker run -d -v auto-created-volume:/data alpine
# Docker crea un Volume llamado auto-created-volume
Aun así recomiendo crearlo manualmente para saber exactamente dónde están los datos.
P3: ¿Cómo hacer copia de seguridad de un Volume?
Método recomendado por la documentación:
# Contenedor temporal que empaqueta los datos del Volume
docker run --rm \
-v mysql-data:/source \
-v $(pwd):/backup \
alpine tar -czf /backup/mysql-backup.tar.gz -C /source .
# Para restaurar
docker run --rm \
-v mysql-data:/target \
-v $(pwd):/backup \
alpine tar -xzf /backup/mysql-backup.tar.gz -C /target
P4: ¿Se puede migrar un Volume entre hosts distintos?
Sí, pero hay que hacerlo manualmente:
- En el host original: empaqueta los datos del Volume con el método anterior
- Transfiere el archivo
.tar.gzal nuevo host - En el nuevo host: crea el Volume y descomprime los datos
Opciones más avanzadas: usar NFS o almacenamiento en la nube como Volume Driver.
P5: ¿Qué es un Volume anónimo? ¿Cómo limpiarlo?
Si no indicas nombre, Docker crea un Volume anónimo:
docker run -d -v /data alpine # genera un nombre aleatorio tipo a1b2c3d4...
Los Volume anónimos son difíciles de gestionar y ocupan disco fácilmente. Para limpiarlos:
docker volume prune # elimina todos los Volume sin usar (incluidos anónimos)
Mejor práctica: usa siempre Volume con nombre.
6 mejores prácticas (imprescindibles en producción)
- Usa siempre Volume con nombre
# ✓ Buena práctica
docker run -v mysql-data:/var/lib/mysql mysql:8.0
# ✗ Mala práctica
docker run -v /var/lib/mysql mysql:8.0 # Volume anónimo
-
Copia de seguridad periódica de datos críticos
Programa una tarea que respalde cada día los Volume de bases de datos. Perder datos duele; lo sé por experiencia. -
Usa Docker Compose en proyectos complejos
# docker-compose.yml
services:
db:
image: mysql:8.0
volumes:
- mysql-data:/var/lib/mysql
volumes:
mysql-data:
driver: local
- En producción usa —mount en lugar de -v
La sintaxis--mountes más explícita y los errores son más claros:
docker run --mount type=volume,source=mysql-data,target=/var/lib/mysql mysql:8.0
- Limpia periódicamente Volume sin usar
Una vez al mes:
docker volume prune
- Datos sensibles: Volume cifrado
Si el Volume contiene contraseñas o claves, valora cifrado (por ejemplo, partición LUKS).
Conclusión
Volvamos a esa madrugada del principio: si hubiera sabido de Docker Volume, bastaba con un comando:
docker run -d --name mysql-demo -v mysql-data:/var/lib/mysql mysql:8.0
Los datos no habrían desaparecido con el contenedor. Cuatro horas de trabajo y veinte mil registros de prueba habrían quedado a salvo en el host.
Los contenedores Docker son «sin estado» por diseño: es su ventaja y también su límite. Volume existe precisamente para superar ese límite. Te permite disfrutar de la ligereza y el aislamiento del contenedor y, a la vez, guardar datos con tranquilidad.
En este artículo hicimos cinco ejemplos: crear tu primer Volume, persistencia de sitio estático con Nginx, escenarios reales con MySQL y Redis, y Volume compartido entre contenedores. Cubren alrededor del 90 % de lo que necesitas en el día a día.
Ahora te toca a ti. Abre la terminal, crea tu primer Volume, arranca un contenedor MySQL y escribe algunos datos. Elimínalo, vuelve a arrancarlo y mira cómo los datos siguen ahí: en ese momento entenderás de verdad qué es la persistencia de datos.
Y si no quieres volver a pasar el miedo de «perder todo a las tres de la madrugada», guarda este artículo. Algún día puede salvarte.
Flujo completo de volúmenes Docker en la práctica
5 ejemplos para resolver definitivamente la pérdida de datos en contenedores, desde conceptos básicos hasta persistencia con MySQL y Redis
⏱️ Estimated time: 30 min
- 1
Step 1: Entender la causa raíz: por qué se pierden los datos del contenedor
Causa raíz:
• Los contenedores Docker no están pensados para almacenar datos; al eliminar el contenedor los datos desaparecen
• Al reiniciar el contenedor, la configuración vuelve al estado inicial
• Al eliminar el contenedor, la capa de escritura se destruye junto con él
• Es el talón de Aquiles de Docker
Sistema de archivos por capas de Docker:
• La capa inferior es la capa de imagen (solo lectura, compartida por todos los contenedores)
• La capa superior es la capa del contenedor (escritura, exclusiva de cada contenedor)
• Los archivos que creas, la configuración que modificas y los datos que importas se escriben en esta capa superior
• Al eliminar el contenedor, esta capa de escritura se destruye junto con él - 2
Step 2: Caso 1: crear tu primer Volume
Crear un Volume:
• Usa el comando docker volume create para crear un Volume
• Comando: docker volume create my-data
• El Volume lo gestiona Docker y se almacena en el directorio de datos de Docker; ideal para producción
Usar el Volume:
• Monta el Volume al iniciar el contenedor: docker run -d -v my-data:/data alpine
• Los datos se guardan en el Volume; al eliminar el contenedor no se pierden
Verificar el Volume:
• Usa docker volume ls para ver todos los Volume
• Usa docker volume inspect my-data para ver los detalles del Volume - 3
Step 3: Casos 2-5: Nginx, MySQL, Redis y Volume compartido
Caso 2: persistencia de sitio estático con Nginx
• Monta el Volume en el contenedor: docker run -d -v nginx-html:/usr/share/nginx/html nginx
• Los archivos estáticos se guardan en el Volume; al eliminar el contenedor no se pierden
Caso 3: persistencia de datos con MySQL
• Monta el Volume en /var/lib/mysql: docker run -d -v mysql-data:/var/lib/mysql mysql:8.0
• Los datos de la base de datos se guardan en el Volume; al eliminar el contenedor no se pierden
Caso 4: persistencia de datos con Redis
• Monta el Volume en /data: docker run -d -v redis-data:/data redis
• Los datos de Redis se guardan en el Volume; al eliminar el contenedor no se pierden
Caso 5: Volume compartido entre varios contenedores
• Varios contenedores montan el mismo Volume:
docker run -d -v shared-data:/data container1
docker run -d -v shared-data:/data container2
• Varios contenedores pueden compartir datos - 4
Step 4: Volume vs Bind Mount y mejores prácticas
Volume vs Bind Mount:
Volume
• Gestionado por Docker, almacenado en el directorio de datos de Docker
• Ideal para producción, más seguro y fiable
Bind Mount
• Monta directamente un directorio del host
• Ideal para desarrollo, configuración más flexible
Mejores prácticas:
• En producción usa Volume
• En desarrollo puedes usar Bind Mount
• Haz copias de seguridad periódicas de los datos del Volume:
docker run --rm -v mysql-data:/data -v $(pwd):/backup alpine tar czf /backup/mysql-backup.tar.gz /data
• Usa Volume con nombre para facilitar la gestión; evita Volume anónimos
• Limpia periódicamente Volume sin usar: ejecuta docker volume prune una vez al mes
FAQ
¿Por qué se pierden los datos del contenedor? ¿No sirven los contenedores Docker para almacenar datos?
Docker usa un sistema de archivos por capas. Imagina un pastel de capas:
• La capa inferior es la capa de imagen (solo lectura, compartida por todos los contenedores)
• La capa superior es la capa del contenedor (escritura, exclusiva de cada contenedor)
• Los archivos que creas, la configuración que modificas y los datos que importas se escriben en esta capa superior
• Al eliminar el contenedor, esta capa de escritura se destruye junto con él
¿Cómo usar Docker Volume para resolver la pérdida de datos?
Crear un Volume:
• Usa el comando docker volume create: docker volume create my-data
• El Volume lo gestiona Docker y se almacena en el directorio de datos de Docker; ideal para producción
Usar el Volume:
• Monta el Volume al iniciar el contenedor: docker run -d -v my-data:/data alpine
• Los datos se guardan en el Volume; al eliminar el contenedor no se pierden
¿Cómo configurar persistencia de datos para MySQL y Redis?
• Monta el Volume en /var/lib/mysql: docker run -d -v mysql-data:/var/lib/mysql mysql:8.0
• Los datos de la base de datos se guardan en el Volume; al eliminar el contenedor no se pierden
Persistencia de datos con Redis:
• Monta el Volume en /data: docker run -d -v redis-data:/data redis
• Los datos de Redis se guardan en el Volume; al eliminar el contenedor no se pierden
Verificar la persistencia:
• Tras eliminar y recrear el contenedor, los datos siguen ahí
• Usa docker volume inspect para ver la ubicación del Volume
• Los datos se almacenan en el host
¿Qué diferencia hay entre Volume y Bind Mount? ¿Cuál debo usar?
Volume:
• Gestionado por Docker, almacenado en el directorio de datos de Docker
• Ideal para producción, más seguro y fiable
Bind Mount:
• Monta directamente un directorio del host
• Ideal para desarrollo, configuración más flexible
Recomendación:
• En producción usa Volume (datos gestionados por Docker, más seguro y fiable)
• En desarrollo puedes usar Bind Mount (acceso directo a archivos del host, más cómodo para depurar)
Mejores prácticas:
• En producción usa Volume
• En desarrollo puedes usar Bind Mount
• Haz copias de seguridad periódicas de los datos del Volume
• Usa Volume con nombre para facilitar la gestión
• Evita Volume anónimos
13 min de lectura · Publicado el: 17 dic 2025 · Actualizado el: 21 ago 2026
Guía práctica de Docker
Si llegaste desde búsqueda, lo más rápido es ir al artículo anterior o siguiente de esta misma serie.
Anterior
Despliegue PHP con Docker Compose: tutorial completo DNMP (Nginx+MySQL+PHP)
Guía paso a paso para desplegar DNMP (Docker+Nginx+MySQL+PHP) con Docker Compose en un solo comando. Listo en 10 minutos, elimina la inconsistencia de entornos en el equipo, con archivos de configuración completos y guía de errores típicos
Parte 13 de 38
Siguiente
Copia de seguridad y migración de volúmenes Docker: guía práctica con 3 métodos
Explicación detallada de 3 métodos para respaldar volúmenes Docker: empaquetado tar, comando docker cp y herramientas automatizadas. Incluye precauciones para bases de datos, flujo completo de migración de servidores y guía para evitar errores comunes.
Parte 15 de 38



Comentarios
Inicia sesión con GitHub para dejar un comentario