Migrar contenedores Docker
Qué cubre este artículo sobre migración Docker
- Cuándo es necesario migrar contenedores.
- Cómo exportar contenedores e imágenes.
- Copiar volúmenes.
- Trasladar entornos Compose.
- Consejos para una migración sin problemas.
Introducción: migrar contenedores Docker
A veces necesitas trasladar un contenedor Docker a otro host. Esto puede ser necesario durante cambios de hardware, migraciones a la nube o reestructuraciones. Una migración bien hecha incluye la imagen, la configuración y, lo más importante, los datos persistentes. Sin volúmenes y variables de entorno, sueles perder la parte más crítica durante el traslado.
Este artículo te muestra cómo migrar contenedores Docker, imágenes, volúmenes y configuraciones de Compose.
Términos clave
- Export: Sistema de archivos del contenedor como tar.
- Import: Convertir tar en imagen.
- Save/Load: Guardar y cargar imagen como tar.
- Volume: Datos persistentes del contenedor.
- Commit: Convertir contenedor en imagen.
- Registry: Almacenamiento centralizado de imágenes.
- rsync: Sincronización de archivos.
- Compose-Override: archivo Compose adicional.
Cuándo migrar
- Nuevo servidor.
- Cambio de proveedor en la nube.
- Restauración desde backup.
- De entorno de desarrollo a producción.
- Reemplazo de hardware.
Guardar contenedor como imagen
docker commit mein-container mein-image:backup
docker save -o mein-image.tar mein-image:backup
En el nuevo host:
docker load -i mein-image.tar
Exportar contenedor
docker export mein-container -o mein-container.tar
cat mein-container.tar | docker import - mein-image:importiert
Transferir imágenes
docker save -o images.tar image1:latest image2:latest
docker load -i images.tar
Copiar volúmenes
Extraer y transferir volumen:
docker run --rm -v mein-volume:/data -v $(pwd):/backup alpine \
tar -czf /backup/mein-volume.tar.gz -C /data .
En el nuevo host:
docker run --rm -v mein-volume:/data -v $(pwd):/backup alpine \
tar -xzf /backup/mein-volume.tar.gz -C /data
Con rsync
Para volúmenes grandes:
rsync -avz /var/lib/docker/volumes/mein-volume/_data/ \
benutzer@neuer-host:/var/lib/docker/volumes/mein-volume/_data/
Archivos Compose
- Copia todos los archivos Compose.
- Copia los archivos
.env. - Haz backup de los volúmenes.
- Inicia en el nuevo host:
docker compose up -d
Usar una Registry
Envía tus imágenes a una registry:
docker tag mein-image:latest registry.example.com:5000/mein-image:latest
docker push registry.example.com:5000/mein-image:latest
En el nuevo host:
docker pull registry.example.com:5000/mein-image:latest
Lista de verificación
- Imágenes guardadas o enviadas a registry.
- Volúmenes comprimidos y copiados.
- Archivos Compose transferidos.
- Archivos
.envtransferidos. - Redes y puertos verificados.
- Secrets y certificados copiados.
- Contenedores iniciados en el nuevo host.
- Logs y funcionalidad verificados.
Consejos
- Es mejor guardar contenedores como imagen que usar
export. - Siempre haz backup de volúmenes por separado.
- No modifiques el contenedor después de este paso, antes de hacer commit.
- Anota los números de versión.
- Prueba primero en un entorno de prueba.
- Crea dumps adicionales de bases de datos.
- Ajusta DNS y dependencias externas.
Errores comunes
- Volumen olvidado: Los datos faltan después del inicio.
- Rutas diferentes: Los bind mounts ya no coinciden.
.envfaltante: El contenedor no inicia.- Diferencias de arquitectura: La imagen para amd64 no corre en arm64.
- Problemas de red: Nueva IP del host o DNS incorrecto.
- Secrets faltantes: La aplicación no puede autenticarse.
Enlaces y recursos relacionados
- BotServ.de Docker Volume-Backup
- BotServ.de Docker Backup-Strategien
- BotServ.de Docker Registry
- BotServ.de Docker Compose
FAQ: migrar contenedores Docker
¿Cuál es la forma más simple?
Guarda la imagen con docker save y los volúmenes como tar, luego cárgalos en el nuevo host.
¿Debo detener el contenedor? Sí, para garantizar datos consistentes e una imagen limpia.
¿Se pierden los volúmenes con export?
Sí, docker export solo guarda el sistema de archivos del contenedor.
¿Puedo copiar volúmenes directamente?
Sí, mediante docker run con tar o rsync.
¿Cómo transfiero muchas imágenes?
Usa una registry o docker save para guardar varias imágenes en un solo tar.
Fuentes y lecturas complementarias
- Docker Export/Import: https://docs.docker.com/engine/reference/commandline/export/
- Docker Save/Load: https://docs.docker.com/engine/reference/commandline/save/
- Docker Volumes: https://docs.docker.com/storage/volumes/
Resumen: migrar contenedores Docker
La migración de contenedores requiere más que solo mover la imagen. Los volúmenes, variables de entorno, redes y secrets también forman parte del traslado. Las imágenes se pueden transferir con docker save/load o mediante una registry, y los volúmenes se copian usando tar o rsync. Una lista de verificación y una prueba rápida de funcionalidad te ayudan a evitar pérdida de datos y tiempos de inactividad.


