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
aumentar la velocidad del sitio

Soluciones para aumentar la velocidad del sitio web utilizando las herramientas de cPanel

La velocidad de carga del sitio web es uno de los factores más importantes para mejorar la experiencia del usuario (UX) y el SEO. Los usuarios que experimentan retrasos en la carga del sitio suelen abandonar la página, lo que aumenta la tasa de rebote. Exploraremos soluciones expertas para aumentar la velocidad del sitio mediante la configuración y las herramientas disponibles en cPanel.
Cómo funciona DNSSEC y sus usos

Cómo funciona DNSSEC y sus usos

DNSSEC es un protocolo de seguridad para la autenticación e integridad de datos DNS. Este artículo explorará cómo funciona DNSSEC y qué se requiere para implementarlo. Los lectores pueden aumentar significativamente la seguridad de sus servicios utilizando esta tecnología.
TLS vs. SSL: Comprensión de las diferencias clave y su importancia

TLS vs. SSL: Diferencias, historia e importancia para la seguridad web

En materia de seguridad web, siempre se escuchan los términos "SSL" y "TLS". Pero ¿cuál es exactamente la diferencia entre ambos? ¿Por qué se utiliza TLS como estándar web seguro hoy en día y SSL prácticamente se ha abandonado? En este artículo, analizaremos este tema desde una perspectiva profesional para que comprendas mejor los protocolos de seguridad web y la importancia de elegir el adecuado.