我需要在Docker容器中运行一个Python脚本(我目前已执行“disco_test.py”作为ENTRYPOINT命令),该脚本将利用Disco(当然需要在该容器中运行)。问题是我似乎无法在Dockerfile中使用CMDRUN或从Python脚本本身(使用subprocess模块​​)运行Disco。

但是,如果我创建了没有ENTRYPOINT命令的其他图像,则使用docker run -i -t disco_test /bin/bash运行它,然后打开Python Shell,则可以使用子流程模块成功地使Disco运行(只需使用call(["disco", "start"])即可)。退出Python Shell后,我确实可以验证Disco仍在正常运行(disco status报告“Master 0cfddb8fb0e4:8989正在运行”)。当我尝试从“disco_test.py”中以相同方式(使用call(["disco", "start"]))启动Disco时(我以ENTRYPOINT命令执行),它不起作用!它将打印“Master 0cfddb8fb0e4:8989启动”,但是之后始终检查disco status则显示“Master 0cfddb8fb0e4:8989已停止”。

关于ENTRYPOINT命令的运行方式是否有某些问题,使我无法从相应的Python脚本中运行Disco?实际上,在我的机器上(不在Docker容器中)运行“disco_test.py”确实可以使Disco启动并成功运行。

任何见解或建议,将不胜感激!

最佳答案

我猜想它的运行将被守护,并退出并立即停止容器。您可以尝试使用这些容器dockerized disco。它使用主管运行迪斯科。

10-04 20:54