【发布时间】:2015-12-02 04:56:23
【问题描述】:
最近我在几个节点上设置了 Marathon、Mesos 和 Docker。一切都运行良好,除了我在启动 Docker 容器时遇到问题。具体来说,当 Marathon 执行启动 Docker 容器的任务时,marathon 将附加 /bin/sh -c ' ' 作为默认 Docker 命令。这会导致我的容器启动然后立即退出(我可以看到它们是使用 docker ps -a 启动的)
我查看了 Mesos 文档,其中指出:
docker 镜像目前支持拥有入口点和/或默认命令。
要使用默认命令(即:docker run image)运行 docker 映像,不得设置 CommandInfo 的值。如果设置了该值,那么它将覆盖默认命令。
要运行定义了入口点的 docker 映像,CommandInfo 的 shell 选项必须设置为 false。如果 shell 选项设置为 true,Docker Containerizer 将运行使用 /bin/sh -c 包装的用户命令,该命令也将成为映像入口点的参数。
这是很好的信息(我看到 Mesos 的预期行为),但我在 Marathon 中没有看到关闭 CommandInfo shell 的选项。
我的问题是:
- 如何将 CommandInfo Shell 选项(在 Marathon 或 Mesos 中)设置为 false?需要在哪里设置?
当我在机器上运行我的ghost-blog-test 图像时(使用标准的docker run 命令),它使用/entrypoint.sh npm s 作为其默认命令。在使用 Mesos+Marathon 时,我希望有同样的行为。
提前致谢!
【问题讨论】:
标签: shell docker mesos marathon