1

我对这些技术很陌生,并试图弄清楚。因此,我遵循了 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 上部署此应用程序,如果您需要更多信息,请告诉我。

提前致谢。

4

2 回答 2

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)。

于 2015-06-18T23:29:30.497 回答
0

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

于 2015-06-22T17:55:23.853 回答