Copia de seguridad y transferencia de datos completos de un contenedor Docker a otro servidor.
Una guía paso a paso para realizar copias de seguridad y migrar datos de Docker de un servidor a otro, junto con consejos de seguridad y optimización.

Copia de seguridad y transferencia de datos completos de un contenedor Docker a otro servidor.

Este artículo le enseñará métodos seguros para realizar copias de seguridad y migrar datos de contenedores Docker a otro servidor. Mediante ejemplos prácticos y consejos de seguridad, esta guía le ayudará a reducir los riesgos potenciales y optimizar el proceso.
0 acciones
0
0
0
0

¿Cómo se puede trasladar un contenedor Docker completo y seguro a otro servidor?

Una copia de seguridad y migración completa de un contenedor Docker implica tres componentes principales: imagen, datos (volúmenes o montajes de enlace) y Configuración/Metadatos. Esta guía paso a paso describe métodos seguros, sin errores y reversibles para migrar servicios en contenedores (incluidas aplicaciones web y bases de datos).

Generalidades y requisitos previos

Antes de comenzar, asegúrese de tener lo siguiente:

  • Acceso SSH a ambos servidores con el usuario o root apropiado.
  • Instala Docker (y docker-compose si es necesario) en el origen y el destino. Ejemplo de instalación rápida:
curl -fsSL https://get.docker.com | sh
# or follow your distribution guide
  • Compruebe que dispone de suficiente espacio en disco para los archivos.
  • Clave SSH para transferencia segura y herramientas como sincronización r O SCP-1811.
  • Planificación de la programación de interrupciones del servicio o métodos de baja latencia.

Comandos iniciales para comprobar:

docker ps -a
docker volume ls
df -h
du -sh /var/lib/docker/volumes/*

Estrategias de copia de seguridad y migración: cómo elegir el método adecuado.

Tres componentes clave para una transición completa:

  • Imagen Contenedor (código/binarios)
  • Datos estables (volúmenes o montajes de enlace)
  • Configuraciones y metadatos (docker-compose.yml, archivos de entorno, redes, secretos)

Métodos comunes:

  • Exportación de Docker / Importación de Docker: Incluye el sistema de archivos del contenedor, pero no transfiere metadatos ni volúmenes con nombre.
  • Docker guardar / Docker cargar: Adecuado para imágenes creadas.
  • Copia de seguridad de volúmenes Comprima el archivo en formato tar y transfiéralo con rsync/scp o cárguelo a S3.
  • Utilizando un registro privado Para imágenes push/pull.
  • Utilice herramientas de gestión Como docker-compose o Kubernetes para reconstruir el servicio con definiciones.

Escenario 1: Imagen local y volumen con nombre (por ejemplo, aplicación web + MySQL)

Suposición: Contenedor web y MySQL con volumen llamado mysql_data. Pasos en orden:

1) Obtención de la imagen del contenedor

Si dispone de una imagen local o se han realizado cambios en el contenedor, primero busque el nombre de la imagen y el ID del contenedor, y guarde el contenedor si es necesario.

docker ps --no-trunc --format '{{.Image}} {{.ID}}'
docker commit CONTAINER_ID myapp:backup-2026-07-14
docker save -o /tmp/myapp_backup_image.tar myapp:backup-2026-07-14

2) Copia de seguridad de volumen con nombre

Método seguro con un contenedor auxiliar que comprime el contenido del volumen en el host:

docker run --rm \
  -v mysql_data:/data \
  -v /tmp/backup:/backup \
  ubuntu \
  bash -lc "cd /data && tar czf /backup/mysql_data.tar.gz ."

Para grandes cantidades de datos, puede utilizar un compresor más rápido como zstd:

docker run --rm -v mysql_data:/data -v /tmp/backup:/backup ubuntu bash -lc "cd /data && tar -I 'zstd -19' -cf /backup/mysql_data.tar.zst ."

3) Copia de seguridad de la base de datos (preferible)

Para garantizar la coherencia e integridad de la base de datos, lo mejor es realizar un volcado lógico:

docker exec CONTAINER_ID sh -c 'exec mysqldump --all-databases --single-transaction -u root -p"$MYSQL_ROOT_PASSWORD"' > /tmp/all_databases.sql

Explicación: Este método elimina la dependencia del sistema de archivos del volumen y produce un volcado lógico correcto.

4) Transferir al servidor de destino

Se recomienda utilizar rsync para transferencias seguras y continuas, especialmente para archivos grandes.

rsync -avP -e "ssh -p 22" /tmp/myapp_backup_image.tar user@target:/tmp/
rsync -avP -e "ssh -p 22" /tmp/mysql_data.tar.gz user@target:/tmp/

O más sencillo con scp:

scp /tmp/myapp_backup_image.tar user@target:/tmp/

Nota: Para transferencias grandes, utilice rsync --partial --progress o herramientas como rclone a S3/MinIO.

5) Restaurar en el servidor de destino.

Sube la imagen y restaura el volumen, luego inicia el servicio con docker-compose:

docker load -i /tmp/myapp_backup_image.tar
docker volume create --name mysql_data
docker run --rm -v mysql_data:/data -v /tmp/backup:/backup ubuntu bash -lc "cd /data && tar xzf /backup/mysql_data.tar.gz"

Si utilizó SQL dump, cree un contenedor mysql temporal y realice la importación:

docker run --name mysql-temp -e MYSQL_ROOT_PASSWORD=yourpassword -d mysql:8
cat /tmp/all_databases.sql | docker exec -i mysql-temp sh -c 'mysql -u root -p"$MYSQL_ROOT_PASSWORD"'

Luego, coloque los archivos docker-compose.yml y env e inicie el servicio:

docker-compose -f docker-compose.yml up -d

6) Pruebas y revisión

No olvides revisar los registros, la integridad de los datos y las sumas de verificación:

docker logs -f CONTAINER
sha256sum /tmp/mysql_data.tar.gz
sha256sum /tmp/backup/mysql_data.tar.gz

Escenario 2: Contenedor con montaje de enlace (carpeta del host)

Si el contenedor utiliza un montaje de enlace (por ejemplo, /srv/app/data en el host), simplemente sincronice o comprima la ruta del host con rsync o tar, prepare la misma ruta en el destino e inicie el contenedor.

rsync -avP -e "ssh" /srv/app/data/ user@target:/srv/app/data/

A continuación, inicie el contenedor en el destino con la misma ruta de montaje de enlace.

Escenario 3: Migración sin tiempo de inactividad para bases de datos sensibles

Para reducir las interrupciones del servicio:

  • Replicación Implementar (replicación MySQL o transmisión PostgreSQL) y realizar la transición después de la sincronización.
  • Sincronización rsync inicial y final: Sincronización inicial con rsync para datos grandes, y luego sincronización final con rsync con –inplace y –delete para sincronizar cambios pequeños.
rsync -azP --delete --inplace /var/lib/docker/volumes/mysql_data/_data/ user@target:/var/lib/docker/volumes/mysql_data/_data/

Tras la última sincronización con rsync, detenga el servicio durante unos segundos y luego reinícielo en el destino.

Comparación de opciones de transferencia (ventajas/desventajas)

  • Docker guardar/cargar: Rápido para imágenes, pero no incluye volúmenes.
  • Exportación/importación de Docker: Incluye el sistema de archivos del contenedor, pero pierde los metadatos y los volúmenes.
  • rsync en volúmenes: Control y reanudación precisos, pero requiere gestión y pruebas.
  • Volcado lógico de la base de datos: Fiable y adecuado para la migración entre diferentes versiones de bases de datos.
  • Registro privado: Buenas prácticas para distribuir imágenes entre varios servidores; los datos persistentes deben transferirse por separado.

Consejos de seguridad (muy importantes)

Algunos consejos prácticos de seguridad:

  • Utilice SSH con una clave privada protegida y restricciones de acceso.
  • Proteja los datos confidenciales antes de la transmisión con herramientas como: gpg O edad Cifrar. Ejemplo:
gpg --encrypt --recipient [email protected] /tmp/mysql_data.tar.gz

Después de la transferencia, verifique siempre la integridad de los archivos con suma sha256 Controlar.

En el destino, antes de activar el servicio, compruebe el cortafuegos y las restricciones de puertos, y establezca restricciones de acceso estrictas si fuera necesario.

Consejos prácticos y optimización para big data

  • Compresión Con zstd o gzip con el nivel apropiado: tar -I 'zstd -19' -cf backup.tar.zst /data
  • Utilice rsync con --partial para reanudar la operación si la conexión es inestable.
  • Para transferencias de varios terabytes, considere la posibilidad de enviar discos físicos o utilizar almacenamiento de objetos cerca del destino.

Compatibilidad y versiones de Docker

Antes de migrar, compruebe las versiones de Docker de origen y destino. Normalmente, las imágenes son compatibles, pero algunas funciones nuevas de Compose o de los controladores pueden requerir adaptaciones.

Elegir una ubicación y un tipo de servidor para la migración

La elección de la ubicación del centro de datos y del tipo de servidor depende de la aplicación:

  • Comercio y Forex: Ubicación cercana a los servidores de Exchange para obtener la menor latencia posible.
  • Juego: Ubicaciones adecuadas en Europa/EE. UU. o cerca de jugadores con sistemas anti-DDoS.
  • Inteligencia artificial y renderizado: Servidores GPU y NVMe para E/S de alto rendimiento.
  • Sitios web: Servidor en la nube con CDN y ubicación cercana a los usuarios principales.

Nuestra empresa ofrece más de 85 ubicaciones globales, servidores GPU y redes BGP que pueden cubrir diversas necesidades de migración.

Ejemplo completo: Migración web + MySQL con docker-compose

Resumen de los pasos:

  1. Salida de la configuración de docker-compose y la creación de la imagen local:
docker-compose -f docker-compose.yml config > /tmp/compose_config.yml
docker-compose build
docker save $(docker-compose images -q web) -o /tmp/web_image.tar
  1. Volúmenes de copia de seguridad:
docker run --rm -v project_mysql:/data -v /tmp/backup:/backup ubuntu bash -lc "cd /data && tar czf /backup/mysql_data.tar.gz ."
  1. Transfiere los archivos al destino con rsync y luego restaura y ejecuta docker-compose en el destino.

Lista de verificación final antes de la puesta en marcha

  • Se ha realizado una copia de seguridad de la imagen y los volúmenes, y se ha verificado la suma de comprobación.
  • Los env y los secretos están protegidos o almacenados en una bóveda.
  • Se han comprobado las versiones de Docker y Compose.
  • La red de destino y el cortafuegos están configurados.
  • Se ha definido el escenario de reversión.
  • El calendario definitivo ya ha sido anunciado y el seguimiento está en marcha.

Preguntas frecuentes

También te puede gustar
API de Amazon Web Services

API y servicios de Amazon (AWS): Todo lo que necesitas saber

En el mundo actual, donde la tecnología de la información crece a pasos agigantados, el uso de la infraestructura en la nube se ha convertido en una necesidad fundamental para las empresas. Amazon Web Services, o AWS, es uno de los proveedores de servicios en la nube más grandes y potentes del mundo. En este artículo, explicaremos qué es una API, su función en AWS y los servicios más importantes de Amazon.