Cómo copiar o mover un contenedor Docker a otro host

Cómo copiar o mover un contenedor Docker a otro host
Una fotografía de una persona trabajando en un escritorio de computadora.

Dado que los contenedores Docker son pequeñas cajas de software, puede copiarlos y moverlos fácilmente de una computadora a otra. Es posible que haya trabajado en una instancia de Docker en su computadora local y haya decidido trasladarla a un servidor más potente. O tal vez simplemente desee implementar su contenedor personalizado en varias computadoras, «copiarlo y pegarlo». Otras veces, es posible que no esté satisfecho con un proveedor de computación en la nube y desee cambiar a otro. Aquí, le mostramos cómo mover la imagen del contenedor Docker existente y los volúmenes de datos de un host Linux a otro.

Guardar imagen de contenedor desde el host de origen

Comience enumerando los contenedores Docker disponibles que se ejecutan en su sistema. En mi caso, quiero exportar mi contenedor Docker de Nginx a una nueva máquina:

Una terminal que resalta los contenedores Docker disponibles para un sistema.

Busque el contenedor que desea copiar y luego detenga la instancia:

Una terminal que muestra la salida del comando Docker Stop.

Un contenedor Docker se construye a partir de una imagen inicial genérica. Con el tiempo, puedes agregar tus propios cambios a esta imagen base. Los procesos que se ejecutan dentro del contenedor también pueden guardar sus propios datos o realizar otros cambios. Para conservar todo esto, confirma el estado actual de tu contenedor en una nueva imagen:

Una terminal que muestra el resultado del comando de confirmación de Docker que crea una nueva imagen a partir de la que se está ejecutando actualmente.

Tenga en cuenta que si la instancia se está ejecutando actualmente, esta acción la pausará mientras se guarda su contenido. Si esto es un problema, puede evitar esta pausa ingresando en docker commit -p=false NAME_OF_INSTANCE mycontainerimagesu lugar. Sin embargo, no haga esto a menos que sea absolutamente necesario. Las probabilidades de crear una imagen con datos inconsistentes o incompletos aumentan en este caso.

Ahora, guarde la imagen del contenedor Docker recién confirmada en un archivo comprimido:

Utilice su método de transferencia de archivos preferido y copie su. tar al host donde desea mover su contenedor Docker. Por ejemplo, el siguiente comando transfiere mi imagen de Nginx Docker usando scp:

Exportar un volumen Docker desde su contenedor

Una de las desventajas de guardar una imagen de Docker es que no incluye los accesorios de Docker que haya configurado junto con el contenedor. Esto incluye los montajes de enlaces de red y los volúmenes que haya creado para almacenar los datos persistentes.

Para exportar correctamente su volumen de datos, primero instale Git en su máquina local:

Ejecute el siguiente comando para descargar el script de exportación de volumen para Docker:

Asegúrese de que el script de exportación tenga los bits de permiso correctos, luego cópielo en “/usr/local/bin:” de su máquina.

Pruebe si su script funciona correctamente y luego extraiga todos los volúmenes asociados para su contenedor:

Una terminal que muestra el proceso de copia de seguridad de cualquier volumen de datos asociado para un contenedor Docker.

Envíe los archivos de volumen Docker recién archivados a su máquina remota:

Cargar imagen de contenedor en el host de destino

Inicie sesión en su host remoto, luego ejecute el siguiente comando para cargarlo en el demonio Docker de su máquina remota:

Úselo docker createpara reinicializar la imagen del contenedor Docker con sus indicadores de ejecución originales de su máquina de origen. Por ejemplo, mi contenedor Docker Nginx originalmente tenía el puerto 80 asignado al puerto 8080 de mi máquina host:

Ejecute su contenedor Docker recién importado:

Confirme que su imagen importada esté funcionando correctamente enumerando todos los contenedores activos en el sistema:

Una terminal que muestra la misma imagen del contenedor Docker ejecutándose en un sistema diferente.

Importar un volumen Docker a su contenedor

Para importar un. archivo de volumen tar Docker, primero descargue Git en su nuevo host:

Al igual que con su sistema original, descargue el script auxiliar docker-volume.sh, configure sus bits de permisos en «ejecutar» y luego cópielo en el directorio «/usr/local/bin» de su nueva máquina.

Una terminal que muestra el proceso de obtención e instalación del script Docker Volume para realizar copias de seguridad de los datos asociados a los contenedores.

Cree un nuevo contenedor Docker usando su archivo de imagen exportado:

Ejecute el script docker-volume.sh con su archivo .tar original para cargarlo en el demonio Docker de su nuevo sistema:

Inicie su nuevo contenedor Docker ejecutando el siguiente comando:

Pruebe si su contenedor está cargando su volumen correctamente observando sus datos de configuración internos:

Una terminal que resalta los datos de volumen importados a la nueva máquina.

Transferir imagen sin crear un archivo

A veces, es posible que desees omitir la creación de un mycontainerimage.tar.gzarchivo. Tal vez no tengas suficiente espacio en disco porque el contenedor tiene muchos datos. Puedes guardar, transferir y cargar la imagen en el host de destino con un solo comando. Después de ejecutar el docker commitcomando mencionado anteriormente, puedes usar esto:

También debería funcionar desde Windows, ya que ahora tiene un cliente SSH integrado (PuTTY ya no es necesario).

Continúe con el docker createcomando que corresponda a su situación.

Una terminal que muestra el proceso de creación de un nuevo contenedor Docker después de mover su imagen a través de una tubería SSH.

Por último, inicie el contenedor Docker recién importado ejecutando docker startseguido del nombre del contenedor.

Una terminal que muestra el proceso de inicio de un nuevo contenedor y confirma que está funcionando correctamente.

Uso de Docker Compose para mover una implementación completa de Docker

Con su complemento Compose, Docker permite crear, configurar y ejecutar programas complejos sin preocuparse por la pila de software subyacente del servidor. Esto, a su vez, le permite crear implementaciones de aplicaciones reproducibles en diferentes sistemas Linux.

Para comenzar a migrar su configuración de Docker existente a Docker Compose, primero asegúrese de que su complemento esté actualmente en su sistema:

Cree una nueva carpeta en su directorio de inicio para su instalación de Docker Compose:

Utilice su editor de texto favorito para crear un archivo “docker-compose.yml” para su aplicación:

Pegue el siguiente bloque de código dentro de su archivo Compose y luego adáptelo a sus necesidades específicas:

Guarde su nuevo archivo Compose y luego ejecute el siguiente comando para iniciarlo:

Por último, pruebe si su implementación de Compose funciona correctamente. En mi caso, probaré mi contenedor Nginx Docker abriendo un navegador web y navegando hasta «localhost:8080».

Una captura de pantalla que muestra el contenedor Nginx Docker importado funcionando correctamente en su nueva máquina host.

Aprender a copiar y mover su contenedor Docker a otros hosts Linux es solo una de las pocas tareas que puede realizar con su máquina. Explora este maravilloso mundo del autohospedaje instalando un servidor de Minecraft en Linux usando Docker.

Crédito de la imagen: Max Duzij vía Unsplash . Todas las modificaciones y capturas de pantalla son de Ramces Red.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *