Docker en su forma actual coloca cualquier comando de Docker en una cola de trabajo y los ejecuta uno a la vez y secuencialmente (sincrónicamente). Esto significa que si está creando una API de subproceso único (node.js) que incorpora comandos de la ventana acoplable, como levantar contenedores o descargar imágenes, se realizará una copia de seguridad muy rápidamente y se sobrecargará la cola de trabajo de la ventana acoplable. He llegado tan lejos. La pregunta es ¿cómo podría volver a modelar la ventana acoplable para manejar los comandos de forma asíncrona?
Me importa menos recibir actualizaciones sobre el estado de los comandos o incluso poder proporcionar una función de devolución de llamada para cuando haya terminado. Mi objetivo principal es poder llamar rápidamente a Docker para ponerse de pie o ejecutar comandos en grandes volúmenes sin afectar los tiempos de respuesta de la API.
Algunos pensamientos -
No utiliza eficientemente cada máquina virtual. Costoso. Solución poco elegante.
Todavía no es verdaderamente asincrónico. Además, los diversos demonios de Docker no pueden compartir recursos como imágenes. Entonces, si tiene 10 demonios docker que desean ejecutar un contenedor de Ubuntu, necesitará 10 imágenes de ubuntu separadas que ocuparán 10 veces el espacio del tamaño de la imagen original de ubuntu.
Tienes que fijarte en lo siguiente:
Registro: la imagen de registro de Docker se puede configurar como proxy de almacenamiento en caché. Sus demonios docker se configurarán para usar este registro de proxy de almacenamiento en caché para la extracción de imágenes. Solo la extracción de la primera imagen se descargará de dockerhub y las imágenes se almacenarán en caché localmente, por lo que el segundo demonio de docker que solicite las mismas imágenes lo tendrá casi al instante. Puede usar el docker pull registry
para obtener las imágenes (oficiales) de la biblioteca.
Docker Swarm: está hablando de inicializar más demonios docker y equilibrar tareas. Eso ya se ha hecho usando Docker Swarm y la red de superposición integrada que proporciona.
Kubernetes: una alternativa a Docker Swarm con muchas más funciones y flexibilidad (también complejidad)