【问题标题】:Docker when deployed on marathon is failing continouslyDocker在马拉松上部署时不断失败
【发布时间】:2015-09-04 18:33:59
【问题描述】:

我是这些技术的新手,我正在努力解决问题。因此,我遵循了 Mesosphere 提供的基本教程,并且能够在本地创建一个集群(两个 VM),现在我想部署一个 nodejs 应用程序,所以我创建了一个 docker 映像,其中包含 nodejs express 框架和一个启动服务器的脚本。您可以在 docker 注册表中找到 docker 镜像,名为 pujariamol/nodejs-express,它在根级别有一个名为 runScript.sh 的脚本。

我尝试部署的 JSON 如下:

{
    "id": "app4", 
    "container": {
        "type":"DOCKER",
      "docker": {
        "image": "pujariamol/nodejs-express"
      }
    },
    "cmd":"echo hello > /tmp/out.txt",
    "cpus": 0.25,
    "mem": 512.0,
    "instances": 1
}

我认为这会拉出我的 docker 容器并启动它。另外,我想运行 runScript.sh,所以我在 cmd 中尝试了 './runScript.sh' 但它不起作用,所以我尝试在 out.txt 中写入一些文本以进行测试,但似乎没有任何效果。部署应用程序的那一刻,mesos 显示此应用程序的失败状态。 我正在使用 chrome 扩展邮递员在马拉松上部署它。 我不知道出了什么问题。请帮助我在 Marathon 上部署此应用程序,如果您需要更多信息,请告诉我。

提前致谢。

【问题讨论】:

  • 你能分享 Mesos 和 Marathon 的日志吗? Mesos 日志可以在 Mesos WebUI -> 任务沙箱中找到。

标签: docker mesos marathon


【解决方案1】:

我根本不了解 Mesosphere,但如果您尝试在容器中运行它:

echo hello > /tmp/out.txt

...那么您的容器将非常非常短暂。 Docker 容器只会在您的初始命令运行时运行,echo 会立即退出。

您是否能够在不涉及中间层的情况下单独使用docker run 成功启动容器?您是否查看了容器日志以查看是否有任何有用的错误?您可以为此使用docker logs,Mesosphere 可能会为此信息提供接口。

如果您尝试运行./runScript.sh,您确定容器启动时当前目录中有一个名为runScript.sh 的脚本吗?它必须位于根目录 (/) 中才能正常工作。通常最好提供初始命令的完整路径(例如,/runScript.sh/usr/local/something/runScript.sh)。

【讨论】:

    【解决方案2】:

    感谢拉斯克斯的回复。 是的,我分别检查了容器和脚本,它们工作正常。虽然它现在正在工作,但我不确定这是否是原因。因此,我认为它正在发生,因为我在我的虚拟机上运行容器,并且我正在从我的主机(Windows8)上的邮递员创建一个作业,并且它从来没有为 runScript.sh 工作。因此,我使用 CURL cmd 从 VM 中尝试了它,它工作正常,我也可以访问容器服务器,只是我必须找出容器 IP 地址然后尝试访问它。因此,现在将尝试弄清楚如何从单个 URL 访问这些服务器。 无论如何,谢谢 Larsks,在我阅读您的评论之前,我不知道容器对于此类命令会是短暂的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-29
      • 2015-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-19
      相关资源
      最近更新 更多