Docker dans sa forme actuelle place les commandes de docker dans une file d'attente de travail et les exécute une à la fois et de manière séquentielle (synchrone). Cela signifie que si vous créez une API unique (node.js) incorporant des commandes docker telles que la mise en place de conteneurs ou le téléchargement d'images, elle sera sauvegardée très rapidement et surchargera la file d'attente du docker. Je suis allé aussi loin. La question est comment puis-je re-modéliser docker pour gérer les commandes de manière asynchrone?Comment faire pour exécuter les commandes Docker de manière asynchrone?
Je me soucie moins d'obtenir des mises à jour sur l'état des commandes ou même de pouvoir fournir une fonction de rappel pour quand c'est fait. Mon objectif principal est d'être en mesure d'appeler rapidement docker pour se lever ou exécuter des commandes dans des volumes élevés sans affecter les temps de réponse pour l'API.
Quelques réflexions -
- échelle horizontalement avec plus VM
n'utilise pas efficacement chaque machine virtuelle. Cher. Solution inélégante.
- Initialisez plus de démons docker et répartissez les tâches entre les démons disponibles.
Toujours pas vraiment asynchrone. De plus, les divers démons docker sont incapables de partager des ressources telles que des images. Donc, si vous avez 10 démons docker qui veulent exécuter un conteneur Ubuntu, vous aurez besoin de 10 images ubuntu distinctes qui prendront 10 fois l'espace de la taille de l'image d'origine ubuntu.
- Async Docker client - https://github.com/tulayang/asyncdocker Je suis incapable d'obtenir cette place et fonctionne même sur le conteneur docker NIM. De plus, il est écrit en NIM. Aussi pas tout à fait clair que c'est ce que je cherche ou si c'est juste référençant les requêtes http async dans docker.
Quelles commandes docker avez-vous trouvé synchrone? Je n'ai jamais rencontré ce problème auparavant. – Matt
@Matt Il est plus prononcé avec les conteneurs debout. 'docker run -it -d ubuntu' Vous pouvez voir l'effet si vous créez la chaîne de commandes suivante dans votre script. 1. Contenir les conteneurs 2. Exécuter la commande dans ce conteneur 3.Arrêtez et supprimez ce conteneur Ensuite, exécutez une boucle pour exécuter ce script à volumes élevés et il sera rapidement sauvegardé, les temps de réponse s'allongent considérablement très rapidement. –