mesos marathon docker容器-commandinfo

gdx19jrr  于 2021-06-21  发布在  Mesos
关注(0)|答案(2)|浏览(449)

最近,我在几个节点上设置了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 Package 的用户命令,该命令也将成为图像入口点的参数。
这是一个很好的信息(我看到了mesos的预期行为),但是我在marathon中没有看到关闭commandinfo shell的选项。

我的问题是:
如何将commandinfo shell选项(在marathon或mesos中)设置为false?需要在哪里设置?
当我跑步的时候 ghost-blog-test 机器上的图像(使用标准 docker run 命令),它使用 /entrypoint.sh npm s 作为其默认命令。我希望在使用mesos+marathon时有相同的行为。
提前谢谢!

v09wglhw

v09wglhw1#

由于问题(#2147),您需要定义一个命令,否则不指定一个命令就可以了,并运行默认的docker入口点。
最新版本(0.13)修复了相关的bug,但是您需要使用api,因为ui中仍然存在问题(#2749)。

vmdwslir

vmdwslir2#

根据api文件
cmd(字符串)
执行的命令。这个值由mesos通过/bin/sh-c${app.cmd} Package 。必须提供cmd或args。在同一个应用程序中同时提供cmd和args是无效的。
args(字符串数组)
表示指定要运行的命令的替代模式的字符串数组。这是出于安全使用集装箱船的特点,如自定义码头入口点。即使使用默认命令执行器,也可以使用此args字段代替cmd。此更改反映了从版本0.20.0开始的mesos commandinfo protobuf消息中的api和语义更改。必须提供cmd或args。在同一个应用程序中同时提供cmd和args是无效的。

相关问题