j'essaie de construire lentement une image de menu fixe pour nos besoins. Ce que je veux faire, c’est d’exécuter mon image de base mono, puis d’exécuter en mono un exécutable en arrière-plan. à partir de la ligne de commande normale, sans essayer de l'exécuter dans un conteneur, cela ressemblerait à:
/usr/local/bin/mono /home/crystal/Downloads/BackgroundProcesser.exe &
Cela fonctionne bien. Mais si j'essaie de le faire quand je lance le conteneur comme ceci:
Sudo docker run -i -t crystal/mono-base /usr/local/bin/mono /home/crystal/Downloads/BackgroundProcesser.exe &
Je reçois No such file or directory
. Existe-t-il un moyen de transmettre le &
? Finalement, j'aimerais passer le & in pour exécuter ce BackgroundProcessor en arrière-plan, puis exécuter une autre application au premier plan. J'ai vu ce billet pour une solution différente, http://blog.trifork.com/2014/03/11/using-supervisor-with-docker-to-manage-processes-supporting-image-inheritance/ , mais je pensais que je pouvais exécuter des éléments de la ligne de commande pour des éléments de preuve de concept pour notre application.
utilisez l'option -c pour bash pour lui donner une ligne de commande sous forme de chaîne:
Sudo docker run -i -t crystal/mono-base bash -c "/usr/local/bin/mono /home/crystal/Downloads/BackgroundProcesser.exe & /bin/bash"
et mettre quelque chose après la commande en arrière-plan au conteneur ne se ferme pas immédiatement
@ La réponse d'Ulfeldt fonctionne. Vous voudrez peut-être créer un script pour gérer vos processus, car ce type de ligne de commande deviendra rapidement incontrôlable. Vous pouvez également utiliser supervisor pour exécuter plusieurs processus, comme cela a été expliqué ailleurs .