Simulación de la Migración de Volúmenes a un Nuevo Host
En un escenario del mundo real, transferiría el archivo de copia de seguridad a un nuevo host utilizando herramientas como scp, rsync o un servicio para compartir archivos. Para este laboratorio, simularemos una migración eliminando nuestro volumen original y creando uno nuevo para restaurar nuestros datos.
Simulación de un Entorno de Nuevo Host
Primero, limpiemos nuestros contenedores antiguos para simular el traslado a un nuevo entorno:
docker rm -f my-container data-generator
Ahora, eliminemos nuestro volumen original para simular el inicio desde cero en un nuevo host:
docker volume rm my-data-volume
Cree un nuevo volumen que representará nuestro volumen en el "nuevo host":
docker volume create my-new-host-volume
Restaurando el Volumen desde la Copia de Seguridad
Ahora restauraremos nuestra copia de seguridad en el nuevo volumen:
docker run --rm -v my-new-host-volume:/destination -v $(pwd):/backup ubuntu bash -c "cd /destination && tar xvf /backup/my-data-volume-backup.tar"
Este comando:
- Crea un contenedor temporal
- Monta nuestro nuevo volumen en
/destination
- Monta el directorio actual (donde se encuentra nuestra copia de seguridad) en
/backup
- Extrae el archivo tar en el directorio
/destination
Verificando los Datos Restaurados
Verifiquemos que todos nuestros datos se restauraron correctamente en el nuevo volumen:
docker run --rm -v my-new-host-volume:/data ubuntu ls -la /data
Debería ver la misma estructura de archivos que antes:
total 12
drwxr-xr-x 3 root root 4096 Oct 1 12:34 .
drwxr-xr-x 1 root root 4096 Oct 1 12:34 ..
drwxr-xr-x 2 root root 4096 Oct 1 12:34 config
-rw-r--r-- 1 root root 21 Oct 1 12:34 important.txt
-rw-r--r-- 1 root root 24 Oct 1 12:34 test.txt
Verifique el contenido de uno de nuestros archivos para asegurarse de que los datos estén intactos:
docker run --rm -v my-new-host-volume:/data ubuntu cat /data/important.txt
Salida:
This is important data
También verifique el archivo de configuración:
docker run --rm -v my-new-host-volume:/data ubuntu cat /data/config/settings.conf
Salida:
database_url=postgres://user:password@db:5432/mydb
Usando el Volumen Restaurado con un Nuevo Contenedor
Ahora que hemos "migrado" con éxito nuestro volumen, usémoslo con un nuevo contenedor:
docker run --name my-new-container -v my-new-host-volume:/app/data -d nginx
Esto crea un nuevo contenedor Nginx que monta nuestro volumen restaurado en /app/data.
Verifiquemos que el contenedor pueda acceder a los datos del volumen:
docker exec my-new-container ls -la /app/data
Debería ver los mismos archivos que antes, lo que confirma que la migración fue exitosa.
Actualizando Aplicaciones para Usar el Nuevo Volumen
En un escenario del mundo real, después de migrar volúmenes a un nuevo host, necesitaría actualizar sus archivos Docker Compose o comandos de ejecución de contenedores para usar los nuevos nombres o rutas de los volúmenes. Por ejemplo, si estuviera usando Docker Compose, podría actualizar su archivo docker-compose.yml de la siguiente manera:
version: "3"
services:
webapp:
image: nginx
volumes:
- my-new-host-volume:/app/data
volumes:
my-new-host-volume:
external: true
Esto le dice a Docker que use el volumen creado externamente llamado my-new-host-volume.
¡El proceso de migración ahora está completo! Ha logrado con éxito:
- Creado un volumen de Docker y agregado datos
- Realizado una copia de seguridad de los datos del volumen
- Creado un nuevo volumen en un "nuevo host" simulado
- Restaurado los datos de la copia de seguridad en el nuevo volumen
- Verificado la integridad de los datos
- Conectado un nuevo contenedor al volumen migrado