我正在尝试为我们的需求慢慢建立一个码头图像。我想做的是运行我的单声道基本图像,然后单声道在后台运行可执行文件。从正常的命令行,不试图在容器中运行它,它看起来像:
/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/,但我认为我可以从命令行运行一些东西来为我们的应用程序提供概念验证。
答案 0 :(得分:20)
使用-c选项进行bash以命令行作为字符串:
sudo docker run -i -t crystal/mono-base bash -c "/usr/local/bin/mono /home/crystal/Downloads/BackgroundProcesser.exe & /bin/bash"
并将后台命令后的内容放入容器中不会立即退出
答案 1 :(得分:0)
@ Ulfeldt的回答有效。您可能希望创建一个脚本来管理您的流程,因为这种命令行很快就会失控。您还可以使用supervisor来运行多个进程,如已解释elsewhere。