2014-10-10 14 views
12

Ich versuche langsam ein Docker-Bild für unsere Bedürfnisse aufzubauen. Was ich tun möchte, ist mein Basisbild, das mono hat, und dann mono laufen lassen eine ausführbare Datei im Hintergrund. von der normalen Befehlszeile, ohne zu versuchen, es in einem Container auszuführen, würde es wie aussehen:Befehlszeilenargumente zu docker run

/usr/local/bin/mono /home/crystal/Downloads/BackgroundProcesser.exe & 

Das funktioniert gut. Aber wenn ich versuche, es zu tun, wenn ich laufe den Behälter etwa so:

sudo docker run -i -t crystal/mono-base /usr/local/bin/mono /home/crystal/Downloads/BackgroundProcesser.exe & 

ich No such file or directory. Gibt es eine Möglichkeit die & rein zu geben? Schließlich möchte ich die & übergeben, um diesen Hintergrundprozessor im Hintergrund auszuführen, und dann eine andere App im Vordergrund ausführen. Ich sah diesen Beitrag für eine andere Lösung, http://blog.trifork.com/2014/03/11/using-supervisor-with-docker-to-manage-processes-supporting-image-inheritance/, aber ich dachte, ich könnte etwas Zeug von der Befehlszeile für Proof of Concept Zeug für unsere App laufen.

Antwort

17

die Option -c verwenden bash es eine Befehlszeile als String zu geben:

sudo docker run -i -t crystal/mono-base bash -c "/usr/local/bin/mono /home/crystal/Downloads/BackgroundProcesser.exe & /bin/bash" 

und legte etwas nach dem backgrounded Befehl an den Behälter nicht sofort

verlassen
0

@ Ulfeldt Antwort funktioniert. Vielleicht möchten Sie ein Skript erstellen, um Ihre Prozesse zu verwalten, da diese Art von Kommandozeile schnell außer Kontrolle geraten wird. Sie können Supervisor auch verwenden, um mehrere Prozesse auszuführen, wie bereits erläutert wurde elsewhere.