2014-10-10 160 views
12

我試圖慢慢地爲我們的需要建立一個docker鏡像。我想要做的是運行我的基本圖像,它具有單聲道,然後讓單聲道在後臺運行可執行文件。從正常的命令行,而不嘗試運行它在一個容器中,它會看起來像:Docker運行的命令行參數

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

這工作正常。但是,如果我嘗試做當我運行的容器,像這樣:

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

我得到No such file or directory。有沒有辦法通過&?最終,我想通過&以在後臺運行此BackgroundProcessor,然後在前臺運行另一個應用程序。我看到這個帖子提供了一個不同的解決方案,http://blog.trifork.com/2014/03/11/using-supervisor-with-docker-to-manage-processes-supporting-image-inheritance/,但我想我可以從命令行運行一些東西來驗證我們的應用程序的概念。

回答

17

使用-c選項來砸給它一個命令行字符串:

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

,並把東西轉到後臺命令到容器後,不會立即退出

0

@ Ulfeldt的答案作品。您可能需要創建一個腳本來管理您的流程,因爲這種命令行將很快失去控制。您也可以使用主管來運行多個進程,如elsewhere所解釋的。