【问题标题】:Docker deployments fail on Marathon, work fine otherwiseDocker 部署在 Marathon 上失败,否则工作正常
【发布时间】:2018-01-03 14:50:18
【问题描述】:

我一直在尝试使用 Mesosphere Marathon 在 Mesos 上部署一个基于 docker 容器 Web 的应用程序。

我首先尝试部署我的 Play Framework 应用程序,当我使用 docker 容器启动它时它运行良好。然后我还尝试了 Mesosphere 网站上提到的example application。两者都在马拉松比赛中失败,但在作为独立 docker 镜像运行时工作正常。

应用程序在 Marathon Web UI 中显示为“正在等待”或“正在部署”,而在 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

【问题讨论】:

  • 了解实际的错误消息/日志会很有趣...

标签: docker mesos marathon


【解决方案1】:

如果没有实际的错误消息或日志,很难猜测您的问题可能是什么。

我的第一个想法是您应该检查您的 Mesos 从站是否以 --containerizers=docker,mesos 标志启动。如果没有,它根本无法工作。

另外,如果您使用的是私有注册表,请确保您的 Mesos Slaves 上的 Docker 已配置为使用它,或者遵循 Marathon docs 中关于如何使用私有注册表的指南。

你能在任何 Mesos Slave 上执行docker pull devrep/message-mediator:latest 吗?

另见

【讨论】:

  • 嗨!谢谢回复。我已确保容器化程序已正确设置。我在日志中看不到任何内容。
  • 嗯,我真的不敢相信,当您尝试启动 Docker 容器时,无论是在 Mesos Slave 日志还是 Marathon 日志中都没有任何内容......这非常有帮助无需日志等确凿事实为您提供帮助。
  • 我发现了 mesos 日志,我认为这很有帮助。它们被添加到问题描述中。
  • 您是否使用私有注册表 (devrep)?如果你,你必须为你节点上的 Docker 实例配置这个......
【解决方案2】:

我知道现在回答它很晚,但可能会有所帮助。看到你的日志我发现了

devrep/message-mediator:latest

这里latest 是您的图像的标签名称,如果您没有在容器 docker 图像中提供一个或将其留空,如下所示

  "container": {
    "type": "DOCKER",
    "docker": {
      "image": "devrep/message-mediator",
    },
  },

它会自动尝试提取devrep/message-mediator:latest,我非常怀疑它是否会出现,因此请尝试始终添加标签名称,例如在我的情况下它是 v1

devrep/message-mediator:v1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多