2016-05-31 10 views
0

Ich habe eine Node.js-Anwendung in einem Docker-Container ausgeführt.Ist es möglich, einen neuen Docker-Container in einem aktiven Docker-Container mithilfe von Docker Compose zu starten?

Ich muss einen neuen Container aus meiner Node.js-Anwendung (über Code; z. B. child_process.spawn()) mit dem einzigen Zweck starten, ein Python-Skript auszuführen. Ich muss auch ein Argument (eine Datenbank-Datensatz-ID) an dieses Python-Skript übergeben. So lautet der Befehl:

python main.py 56fb661b7e51f80736d48113 

Bitte beachte, dass ich in dem aktuellen Container nicht dieser Container ausgeführt werden soll, sondern ein separater Behälter sein.

Ich verstehe, ein Orchestrierungsframework wie Swarm oder Kubernates wäre besser für diese Aufgabe geeignet, aber es wurde angefordert, dass ich Docker Compose lokal auf meinem Computer in meiner Entwicklungsumgebung verwenden, und dann werden wir Kubernates in der Produktion verwenden.

Ist es möglich, einen neuen Docker-Container (nur ein Container, nicht eine ganz neue Maschine/VM) aus einem laufenden Docker-Container mit Docker Compose zu starten, und wenn ja, wie kann ich vorgehen?

Antwort

1

Ich habe es nicht selbst gemacht, aber von dem, was ich sammle, wenn Sie Docker auf Ihrem Kind-Container installiert haben, wenn Sie den Docker-Socket des Hosts in dem Kind verfügbar machen, mit dem Sie interagieren können. das heißt

--volume=/var/run/docker.sock:/tmp/docker.sock 

Sie werden Ihr Kind Docker Prozess Config muss auf diesem Sockel Punkt (vermutlich sollte der DOCKER_HOST envvar arbeiten?), aber das ist die Grundidee. Das Ausführen von Docker-Befehlen für diesen Socket sollte auf dem Host funktionieren.

https://github.com/gliderlabs/registrator Verwenden Sie diese Methode, die Ihnen einige Hinweise geben kann.

Offensichtlich erstellt diese Methode der Verwendung von Docker eine Reihe von Problemen, aber wenn es für Ihre Situation am besten ist, dann gehen Sie dafür.

Verwandte Themen