2014-10-10 17 views
12

Sto provando a creare lentamente un'immagine di finestra mobile per le nostre esigenze. Quello che voglio fare è eseguire la mia immagine di base che ha mono, e quindi fare eseguire un eseguibile mono in background. dalla normale riga di comando, senza provare a eseguirlo in un contenitore, sarebbe simile a:Argomenti della riga di comando sulla finestra mobile

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

Che funzioni correttamente. Ma se provo a farlo quando ho eseguito il contenitore in questo modo:

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

ottengo No such file or directory. C'è un modo per passare lo &? Alla fine, mi piacerebbe passare il & per eseguire questo BackgroundProcessor in background, e quindi eseguire un'altra app in primo piano. Ho visto questo post per una soluzione diversa, http://blog.trifork.com/2014/03/11/using-supervisor-with-docker-to-manage-processes-supporting-image-inheritance/, ma ho pensato di poter eseguire alcune cose dalla riga di comando per prove di concetti per la nostra app.

risposta

17

utilizzare l'opzione -c di bash per dare una linea di comando come una stringa:

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

e mettere qualcosa dopo il comando in background al contenitore non uscire immediatamente

0

@ risposta di Ulfeldt lavori. Potresti voler creare uno script per gestire i tuoi processi, dato che questo tipo di linea di comando potrebbe rapidamente sfuggire di mano. È anche possibile utilizzare supervisore per eseguire più processi, come spiegato elsewhere.