docker在马拉松比赛中不断失败

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

我对这些技术还很陌生,正在努力想办法解决问题。所以,我遵循了mesosphere提供的基本教程,能够在本地创建一个集群(两个虚拟机),现在我想部署一个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
}

我以为这会拉我的码头集装箱,并将启动它。另外,我想运行runscript.sh,所以我在cmd中尝试了“./runscript.sh”,但它不起作用,所以我尝试在out.txt中编写一些文本用于测试,但似乎没有任何效果。部署应用程序时,mesos将显示此应用程序的失败状态。我正在使用chrome扩展postman在marathon上部署它。我不知道出了什么问题。请帮助我将此应用程序部署到marathon上,如果您需要更多信息,请告诉我。
提前谢谢。

jhdbpxl9

jhdbpxl91#

我完全不知道中间层,但如果你想在容器中运行它:

echo hello > /tmp/out.txt

…那么你的容器将会非常,非常短暂。docker容器的运行时间仅与初始命令的运行时间相同,并且 echo 很快就会退出。
您是否能够使用成功启动容器 docker run 在不涉及中间层的情况下?您是否查看了容器日志以查看是否有任何有用的错误?你可以用 docker logs 对于这一点,中间层有可能提供了一个信息接口。
如果你想逃跑 ./runScript.sh ,您确定有一个脚本名为 runScript.sh 当容器启动时在当前目录中?它必须位于根目录中( / )为了让它起作用。一般来说,最好提供一个完整的初始命令路径(例如。, /runScript.sh ,或 /usr/local/something/runScript.sh ).

xzv2uavs

xzv2uavs2#

谢谢你的答复。是的,我单独检查了容器和脚本,它们工作正常。虽然现在起作用了,但我不确定这是不是原因。所以,我假设发生这种情况是因为我在虚拟机上运行容器,并且我从主机(windows8)上的一个 Postman 创建了一个作业,但它对runscript.sh不起作用。所以,我在vm中使用curlcmd尝试了这个方法,它成功了,我也可以访问容器服务器,只是我必须找到容器的ip地址,然后尝试访问它。所以现在我们将尝试找出如何从一个url访问这些服务器。无论如何,谢谢你拉尔克斯,我不知道容器将是短暂的,为这样的命令,在我读到你的评论。

相关问题