Cómo copiar o mover un contenedor Docker a otro host
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:
Busque el contenedor que desea copiar y luego detenga la instancia:
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:
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 mycontainerimage
su 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:
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 create
para 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:
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.
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:
Transferir imagen sin crear un archivo
A veces, es posible que desees omitir la creación de un mycontainerimage.tar.gz
archivo. 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 commit
comando 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 create
comando que corresponda a su situación.
Por último, inicie el contenedor Docker recién importado ejecutando docker start
seguido del nombre del contenedor.
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».
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