2017-03-05 4 views
0

Docker in seiner aktuellen Form platziert alle Docker-Befehle in eine Arbeitswarteschlange und führt sie nacheinander und nacheinander (synchron) aus. Das bedeutet, wenn Sie eine single threaded-API (node.js) erstellen, die docker-Befehle wie Container zum Aufstellen oder Herunterladen von Bildern enthält, wird sie sehr schnell gesichert und überlastet die Docker-Arbeitswarteschlange. Ich bin soweit gekommen. Die Frage ist, wie kann ich Andocker neu erstellen, um Befehle asynchron zu behandeln?So führen Sie Docker-Befehle asynchron aus?

Ich kümmere mich nicht um Updates über den Status der Befehle erhalten oder sogar eine Callback-Funktion für den Fall, wenn es fertig ist. Mein primäres Ziel ist es, Docker schnell aufstehen zu lassen oder Befehle in großen Mengen auszuführen, ohne die Antwortzeiten für API zu beeinflussen.

Einige Gedanken -

  1. Skala horizontal mit mehr VMs

Hat jede virtuelle Maschine nicht effizient nutzen. Teuer. Inelegante Lösung.

  1. Initialisieren Sie weitere Docker-Dämonen und balancieren Sie Aufgaben unter den verfügbaren Daemons.

Immer noch nicht wirklich asynchron. Außerdem können die verschiedenen Docker-Dämonen Ressourcen wie Bilder nicht teilen. Wenn Sie also 10 Docker-Daemons haben, die einen Ubuntu-Container ausführen wollen, benötigen Sie 10 separate Ubuntu-Images, die den 10-fachen Speicherplatz der ursprünglichen Ubuntu-Image-Größe einnehmen.

  1. Async Docker-Client - https://github.com/tulayang/asyncdocker ich nicht in der Lage gewesen, diese zu erhalten und läuft auch auf den NIM Docker-Containern. Zusätzlich ist es in NIM geschrieben. Auch nicht ganz klar, dass das ist, was ich suche oder wenn es nur async http Anfragen innerhalb Docker verweist.
+0

Was Docker Befehle haben Sie synchron sein gefunden? Ich bin noch nicht auf dieses Problem gestoßen. – Matt

+0

@Matt Am ausgeprägtesten bei stehenden Behältern. 'docker run -it -d ubuntu' Sie können den Effekt sehen, wenn Sie die folgende Befehlskette in Ihrem Skript erstellen. 1. Stand Up Container 2. Befehl innerhalb dieses Containers ausführen 3.Stoppen und entfernen Sie den Behälter dann eine Schleife dieses Skript bei hohen Lautstärke auszuführen, und es wird schnell gesichert wird, verlängern die Reaktionszeiten erheblich sehr schnell. –

Antwort

0

Sie müssen unter der folgenden aussehen:

  • Registry: Docker Registrierungs Bild kann als Caching-Proxy konfiguriert werden. Ihre Docker-Dämonen werden so konfiguriert, dass sie diese Caching-Proxy-Registrierung für Image-Pulls verwenden. Nur der erste Bild-Pull wird von dockerhub heruntergeladen und Bilder werden lokal zwischengespeichert, so dass der zweite Docker-Daemon, der die gleichen Bilder anfordert, ihn fast sofort hat. Sie können docker pull registry verwenden, um die (offiziellen) Bibliotheksbilder zu erhalten.

  • Docker Swarm: Sie sprechen über die Initialisierung mehr Docker Dämonen und Balance-Aufgaben, die bereits mit Docker Swarm und integriertem Overlay-Netzwerk, das es zur Verfügung stellt.

  • Kubernetes: Eine Alternative zu Docker Swarm mit viel mehr Funktionen und Flexability (auch Komplexität)

+0

Herunterladen aus einer Registrierung ist eine Sache, die der Daemon _can_ asynchron ausführen kann. – Matt

Verwandte Themen