我一直在尝试使用Mesosphere Marathon在Mesos上部署基于docker容器web的应用程序。
我首先尝试部署我的Play Framework应用程序,当我使用docker容器启动它时它可以正常工作。然后我也尝试在Mesosphere网站上提到example application。两者都在马拉松内部失败,但在作为独立的docker图像运行时工作正常。
该应用程序在Marathon Web UI中显示为“Waiting”或“Deploying”,而在Mesos上则失败。我确保Mesos奴隶运行良好。我相信因为应用程序在Mesos上失败,Marathon会尝试重新启动它,这就是为什么我几乎总是得到这些状态消息。
我以前尝试在Marathon(相同的安装)上部署相同的应用程序(不将其包装在docker容器内)并且它运行良好。但是,我们确实希望将Docker用于我们的应用程序。
我已经完成了大量的教程,一切似乎都遵循“规则”。我不明白什么是错的。
编辑:
E1104 19:29:01.291219 4242 slave.cpp:3342] Container '9dbebe8c-5506-4f70-b560-34be39ecdc96' for executor 'mediator.30dbd1ed-82fc-11e5-b1d4-56847afe9799' of framework '64d39023-aad3-4fdc-8565-6d8e3ec9cb77-0000' failed to start: Failed to 'docker -H unix:///var/run/docker.sock pull devrep/message-mediator:latest': exit status = exited with status 1 stderr = Error: image devrep/message-mediator:latest not found
W1104 19:29:01.293334 4244 docker.cpp:1002] Ignoring updating unknown container: 9dbebe8c-5506-4f70-b560-34be39ecdc96
E1104 19:29:06.711524 4241 slave.cpp:3342] Container 'b7f8004a-2759-41ec-8169-61d04a7c4c3d' for executor 'mediator.343b027e-82fc-11e5-b1d4-56847afe9799' of framework '64d39023-aad3-4fdc-8565-6d8e3ec9cb77-0000' failed to start: Failed to 'docker -H unix:///var/run/docker.sock pull devrep/message-mediator:latest': exit status = exited with status 1 stderr = Error: image devrep/message-mediator:latest not found
如果没有实际的错误消息或日志,很难猜出你的问题是什么。
我的第一个想法是你应该检查你的Mesos Slaves是否是以--containerizers=docker,mesos
旗开始的。如果没有,它根本不起作用。
此外,如果您使用的是私有注册表,请确保您的Mesos Slaves上的Docker配置为使用它,或者遵循Marathon docs中关于如何使用私有注册表的指南。
你能在任何Mesos Slave上做一个docker pull devrep/message-mediator:latest
吗?
另外,请参阅
我知道它很晚才回答它,但可能会有所帮助。看到我发现的日志
devrep/message-mediator:latest
这里latest
是你的图像的标签名称,如果你没有在容器码头图像中提供一个或如下所示留空
"container": {
"type": "DOCKER",
"docker": {
"image": "devrep/message-mediator",
},
},
它会自动尝试拉出我非常怀疑会出现的devrep/message-mediator:latest
,所以尝试添加一个标签名称,例如在我的情况下它是v1
devrep/message-mediator:v1