我对这些技术还很陌生,正在努力想办法解决问题。所以,我遵循了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上,如果您需要更多信息,请告诉我。
提前谢谢。
2条答案
按热度按时间jhdbpxl91#
我完全不知道中间层,但如果你想在容器中运行它:
…那么你的容器将会非常,非常短暂。docker容器的运行时间仅与初始命令的运行时间相同,并且
echo
很快就会退出。您是否能够使用成功启动容器
docker run
在不涉及中间层的情况下?您是否查看了容器日志以查看是否有任何有用的错误?你可以用docker logs
对于这一点,中间层有可能提供了一个信息接口。如果你想逃跑
./runScript.sh
,您确定有一个脚本名为runScript.sh
当容器启动时在当前目录中?它必须位于根目录中(/
)为了让它起作用。一般来说,最好提供一个完整的初始命令路径(例如。,/runScript.sh
,或/usr/local/something/runScript.sh
).xzv2uavs2#
谢谢你的答复。是的,我单独检查了容器和脚本,它们工作正常。虽然现在起作用了,但我不确定这是不是原因。所以,我假设发生这种情况是因为我在虚拟机上运行容器,并且我从主机(windows8)上的一个 Postman 创建了一个作业,但它对runscript.sh不起作用。所以,我在vm中使用curlcmd尝试了这个方法,它成功了,我也可以访问容器服务器,只是我必须找到容器的ip地址,然后尝试访问它。所以现在我们将尝试找出如何从一个url访问这些服务器。无论如何,谢谢你拉尔克斯,我不知道容器将是短暂的,为这样的命令,在我读到你的评论。