我需要在Docker容器中运行一个运行Python脚本(我目前已经将"disco_test.py“作为我的ENTRYPOINT命令执行),它将利用Disco (当然,它需要在该容器中运行)。问题是,我似乎无法让Disco在either文件中使用CMD或RUN运行,也无法从Python脚本本身运行(使用子进程模块)。
但是,如果我在没有使用ENTRYPOINT命令的情况下创建了一个完全相同的映像,用docker run -i -t disco_test /bin/bash运行它,然后打开一个Python shell,我可以使用子进程模块(只需使用call(["disco", "start"]) works)成功地使Disco运行。在退出Python shell时,我确实可以验证Disco是否仍在正常运行(disco status报告"Master 0cfddb8fb0e4:8989 running")。当我尝试以同样的方式(使用call(["disco", "start"]))从"disco_test.py“中启动Disco时(我将其作为ENTRYPOINT命令执行),它不起作用!它将打印“主机0cfddb8fb0e4:8989已启动”,但之后检查disco status时始终显示“主机0cfddb8fb0e4:8989已停止”。
是不是有什么关于ENTRYPOINT命令的运行方式阻止了我从相应的Python脚本中运行Disco?在我的机器上运行"disco_test.py“(而不是在Docker容器中)确实可以让Disco成功地启动和运行。
如有任何见解或建议,我们将不胜感激!
发布于 2015-01-15 07:19:40
我猜它是以守护进程的方式运行的,退出后会立即停止容器。您可以尝试使用这些容器dockerized disco。它使用supervisor来运行disco。
https://stackoverflow.com/questions/26538383
复制相似问题