Cómo gestionar eficientemente imágenes de Docker en un entorno on-premises con red aislada
(blog.sionic.ai)En entornos empresariales, por motivos de seguridad, es común operar Docker en una red aislada sin acceso a Internet externo. En este tipo de entorno, para actualizar una imagen o desplegar una nueva, hay que traer manualmente desde el exterior el archivo de imagen guardado con docker save y cargarlo con docker load.
Pero cuando la imagen pesa varios GB o más, incluso un cambio pequeño obliga a volver a mover todo, lo que genera una ineficiencia importante.
Las imágenes de Docker son una combinación de múltiples capas de solo lectura. Las capas idénticas se comparten entre varias imágenes sin almacenarse de forma duplicada. Gracias a esta estructura, basta con transferir solo las capas modificadas, mientras que el resto puede reutilizarse desde caché.
Como en una red aislada el cacheo automático es difícil, se usa una estrategia que empaqueta y transfiere por separado únicamente las capas modificadas. Para automatizar esto, se desarrolló la herramienta docker-diff, basada en Python, que puede realizar la comparación y la fusión mediante los modos compare y merge, respectivamente.
En entornos donde las imágenes se actualizan con frecuencia, las actualizaciones incrementales permiten ahorrar recursos de red y tiempo, además de mejorar la confiabilidad y la velocidad del despliegue.
Si es posible, se recomienda automatizar también el proceso de generación, transferencia y fusión de paquetes incrementales para reducir errores y aumentar la estabilidad.
3 comentarios
¿No es posible construir un
private docker registryen un entorno aislado sin conexión? ¿Por qué lo implementan de una forma tan complicada?> Si la infraestructura lo permite, operar un registro interno de contenedores podría ser lo más ideal.
Esa frase aparece hacia el final... parece que hay una historia triste detrás 🫠
¿No será que probablemente haya limitaciones de arquitectura o de infraestructura? Supongo que algo así como que solo se entrega al cliente el hardware mínimo necesario para ejecutar la IA.