it-swarm.com.de

befehlszeilenargumente für Andocklauf

ich versuche langsam ein Docker-Image für unsere Bedürfnisse aufzubauen. Was ich tun möchte, ist, mein Basis-Image mit Mono auszuführen und dann eine ausführbare Datei im Hintergrund auszuführen. von der normalen Befehlszeile aus, ohne zu versuchen, es in einem Container auszuführen, würde es wie folgt aussehen:

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

Das funktioniert gut. Aber wenn ich es versuche, wenn ich den Container so betreibe:

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

Ich bekomme No such file or directory. Gibt es eine Möglichkeit, den & zu übergeben? Letztendlich möchte ich das & in übergeben, um diesen Hintergrundprozessor im Hintergrund auszuführen, und dann eine andere App im Vordergrund. Ich habe diesen Beitrag für eine andere Lösung gesehen, http://blog.trifork.com/2014/03/11/ using-supervisor-with-docker-to-manage-processes-supporting-image-inheritance/ , aber ich dachte, ich könnte ein paar Sachen von der Kommandozeile ausführen, um Proof of Concept für unsere App zu testen. 

12
Crystal

verwenden Sie die Option -c zum Bash, um ihm eine Befehlszeile als Zeichenfolge zu geben:

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

wenn Sie etwas hinter dem Hintergrundbefehl in den Container stellen, wird es nicht sofort beendet

18
Arthur Ulfeldt

@ Ulfeldts Antwort funktioniert. Möglicherweise möchten Sie ein Skript erstellen, um Ihre Prozesse zu verwalten, da diese Art von Befehlszeile schnell außer Kontrolle gerät. Sie können Supervisor auch verwenden, um mehrere Prozesse auszuführen, wie dies in anderswo erläutert wurde.

0
seanmcl