Copia de seguridad de contenedores Docker: El Método Correcto (2025)

Copia de seguridad de contenedores Docker: El Método Correcto (2025)
Copia de seguridad de contenedores Docker: El Método Correcto (2025)

Aprende la diferencia entre 'docker export' (un método antiguo) y el método moderno y seguro para hacer copias de seguridad de tus volúmenes de Docker.

Un método para copia de seguridad de un contenedor docker

Un método, generalmente de instalaciones o tutoriales más antiguos, para crear una copia de seguridad de un contenedor docker es usar el comando docker export:

docker export nombre_contenedor > fichero_backup.tar

Para restaurarla, se importaría como una imagen nueva:

docker import fichero_backup.tar nombre_imagen

⚠️ ¡Atención! Por qué este método puede ser peligroso

El método docker export descrito arriba es técnicamente correcto para lo que hace: crear una “foto” del sistema de archivos del contenedor.

Sin embargo, tiene una desventaja crítica que lo hace inadecuado para la mayoría de las copias de seguridad modernas:

docker export NO RESPALDA LOS VOLÚMENES.

En la arquitectura moderna de Docker, todos los datos importantes (bases de datos, archivos subidos, configuraciones) se guardan en volúmenes. Los volúmenes existen fuera del contenedor.

Si usas docker export en un contenedor de WordPress o de una base de datos MySQL, solo estarás copiando los archivos de la aplicación (el software), pero te dejarás atrás todos los datos (la base de datos, los posts, las imágenes). Al restaurar, tendrías una instalación limpia y vacía.

El Método Recomendado (2025): Copia de Seguridad de Volúmenes

El principio correcto es: Los datos viven en los volúmenes, por lo tanto, se respaldan los volúmenes.

Este método es el más seguro y el estándar de la industria.

Paso 1: Identificar el Volumen

Primero, averigua qué volumen está usando tu contenedor.

docker inspect nombre_contenedor

Busca la sección “Mounts”. Verás algo así, que te indica el nombre del volumen (“Name”):

"Mounts": [
    {
        "Type": "volume",
        "Name": "mi_proyecto_db_data",
        "Source": "/var/lib/docker/volumes/mi_proyecto_db_data/_data",
        "Destination": "/var/lib/mysql"
    }
]

Paso 2: Crear la Copia de Seguridad del Volumen

Usamos un contenedor alpine (muy ligero) para comprimir el contenido del volumen en un archivo .tar.gz.

docker run --rm \
  -v mi_proyecto_db_data:/data \
  -v $(pwd):/backup \
  alpine \
  tar -czf /backup/mi_backup_$(date +%Y-%m-%d).tar.gz -C /data .

Desglose del comando:

  • –rm: El contenedor se borra solo al terminar.

  • -v mi_proyecto_db_data:/data: Monta el volumen que queremos respaldar en la carpeta /data del contenedor.

  • -v $(pwd):/backup: Monta nuestra carpeta actual en la carpeta /backup del contenedor (aquí es donde se guardará el .tar.gz).

  • alpine: La imagen que usamos.

  • tar -czf …: El comando que comprime (-c), lo hace en formato gzip (-z), crea un archivo (-f), y le decimos que trabaje dentro (-C) de la carpeta /data y comprima todo (.).

Paso 3: Restaurar la Copia de Seguridad

Restaurar es el proceso inverso.

Crea un nuevo volumen donde irán los datos:

docker volume create mi_nuevo_volumen

Descomprime el backup dentro de ese nuevo volumen:

docker run --rm \
  -v mi_nuevo_volumen:/data \
  -v $(pwd):/backup \
  alpine \
  tar -xzf /backup/mi_backup_2025-11-03.tar.gz -C /data

¡Listo! Ahora puedes iniciar un contenedor nuevo apuntando a este volumen restaurado:

docker run -d --name mi_nuevo_contenedor \
  -v mi_nuevo_volumen:/var/lib/mysql \
  mysql:latest

Conclusión

  • Usa docker export si quieres hacer un snapshot del software de un contenedor.
  • Usa el método de volúmenes si quieres hacer una copia de seguridad de tus datos.