首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置mesos/marathon,指定docker容器名称

设置mesos/marathon,指定docker容器名称
EN

Stack Overflow用户
提问于 2017-10-28 02:27:22
回答 2查看 337关注 0票数 1

我有许多基于Docker的微服务,它们都需要相互通信。它们使用容器名称相互通信。因此,当我使用Docker Swarm或Kubernetes (w Flannel)运行此程序时,它们依赖Docker DNS将容器名称解析为IP地址。

现在,我正在尝试使用Mesos+Marathon运行相同的微服务集,但我遇到了一个问题。当我启动所有微服务(使用Marathon )时,mesos为它们命名为“mesos- app.App _long_hash”。当我在启动容器的机器上输入"docker ps“时,我可以看到这个名称。因此,由于这些mesos分配的容器名称,微服务器无法找到彼此。

作为一个实验,我强制容器名称(使用马拉松app.appContainer.DockerContainer应用程序接口下的‘参数’)为我需要的名称。微服务可以工作,但Marathon会感到困惑,因为它需要这些"mesos-some_long_hash“名称。它报告说他们在部署时被卡住了。

我需要一些方法通过Marathon API告诉mesos,我不想要"mesos- some _long_hash“的名称,而是使用我选择的名称(服务名称)。在Marathon应用程序API中,我看不到任何明显的东西可以做到这一点。

有人知道怎么做吗?

编辑:我在mesos中找到了关于容器的这篇文章。http://mesos.apache.org/documentation/latest/docker-containerizer/

这听起来像是不可能更改容器名称?这太可怕了!如果任何人都不能在没有mesos/marathon异常的情况下命名他们的容器,那么他们如何做一个微服务架构?

EN

回答 2

Stack Overflow用户

发布于 2017-10-31 05:08:30

想出了一个解决方案。

因为我在自己的“用户”网络上运行Docker容器,因此依赖于Docker DNS服务。我可以在Docker run命令中使用--network-alias参数在docker DNS服务中创建别名。我把我的服务名称放在里面,然后一切又开始工作了。即使容器有不同的“mesos-uuid”名称。

基本上,在app.appContainer.DockerContainer.parameter下添加一个键值对,其中键是'network-alias‘,值是服务名称。

看起来我也可以尝试Mesos-DNS。

票数 1
EN

Stack Overflow用户

发布于 2017-10-30 03:44:49

您不能在Mesos中命名容器

如果不能在没有mesos/marathon异常的情况下命名自己的容器,那么任何人如何做微服务架构?

当您开始一个微服务架构时,您应该更多地将容器看作是牛而不是宠物。就像你的服务器一样(参见this answerthat blog post)。容器可以在任何时间在任何地方启动和停止(你的Mesos代理之一),你不能给它们命名,因为这样一来,两个容器就不能在一台服务器上启动。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46981329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档