Können wir Multi-Prozess-Programm in Docker ausführen?

8

Ich habe Code, der mehrere Prozesse verwendet:

%Vor%

Dieses Programm führt umfangreiche Berechnungen für sehr große Datenmengen durch. Daher müssen wir mehrere Prozesse gleichzeitig ausführen, um die Leistung zu verbessern.

Mir wurde gesagt, dass ein Andock-Container für das Hosting-System nur ein Prozess ist. Also frage ich mich, wie mein Multi-Prozess in Docker gehandhabt wird?

Hier sind meine Bedenken:

  1. Da der Container nur ein Prozess ist, wird mein Multi-Prozess-Code dabei Multi-Threading?

  2. Wird die Leistung nachlassen? Weil ich Multi-Prozess verwenden, um Job gleichzeitig zu erledigen, um bessere Leistung zu erzielen.

Kramer Li 22.07.2016, 06:01
quelle

2 Antworten

4

Docker enthält Namespace-Prozess-IDs und vollständige Unterstützung für die Ausführung mehrerer Prozesse durch den Kernel. Innerhalb eines Containers können Sie ps ausführen, um die isolierte Prozessliste zu sehen (die oft nur Ihre Shell und der ps-Befehl ist).

Die Beschreibung von docker zum Ausführen einer einzelnen Anwendung besteht darin, die Anwendungsisolierungstechnologie von den bekannteren Betriebssystemvirtualisierungswerkzeugen zu trennen, in denen Sie den Webserver, den Mailserver, den ssh-Daemon usw. im Hintergrund starten würden.

Ein paar Worte der Vorsicht:

  • Sobald PID 1 beendet ist, wird Ihr Container beendet, unabhängig davon, ob Ihre gegabelten Prozesse noch ausgeführt werden oder nicht.
  • Ohne exit bleiben exitierte Prozesse, die nicht von ihren Eltern erfasst werden, als Zombies (sie werden die Namespace-Isolation nicht weitergeben, um den Host-Init-Prozess zu erreichen). Es gibt eine tini -Anwendung, die Sie als Ihren Einstiegspunkt ausführen können, um diese zu bereinigen, wenn dies ein Problem ist ( tini github repo ).
BMitch 22.07.2016, 12:37
quelle
0

Ja, siehe das Dokument über Supervisor Ссылка

Sie können auch Daemon-Tools verwenden Ссылка

oder s6 Ссылка

    
user2915097 22.07.2016 06:08
quelle