1

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

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

ENTRYPOINT命令的运行方式是否会阻止我从相应的 Python 脚本中运行 Disco?在我的机器上(不是在 Docker 容器中)运行“disco_test.py”确实可以让 Disco 成功启动并运行。

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

4

1 回答 1

1

我猜它正在运行的守护进程并立即退出并停止容器。你可以试试这些容器dockerized disco。它使用主管来运行迪斯科。

于 2015-01-14T23:19:40.220 回答