设置给定docker容器名称的mesos/marathon
我有许多基于Docker的微服务,它们都需要相互对话。它们使用容器名称相互通信。因此,当我使用Docker Swarm或Kubernetes(w Flannel)运行此程序时,它们依赖Docker DNS将容器名称解析为IP地址 现在,我正试图用Mesos+Marathon运行这套相同的微服务,但我遇到了一个问题。当我启动所有的微服务时(使用Marathon app.app API),mesos给它们起了一个名字“mesos-some_long_hash”。当我在启动容器的机器上键入“docker ps”时,我可以看到这个名称。因此,由于这些mesos指定的容器名称,微服务器无法找到彼此 作为一个实验,我将容器名称(使用Marathon app.appContainer.DockerContainer API下的“参数”)强制为我需要的名称。微服务可以工作,但Marathon会感到困惑,因为它需要这些“mesos-some\u long\u散列”名称。它报告他们在部署时卡住了 我需要通过Marathon API告诉mesos,我不想要“mesos-some_long_hash”的名称,而是使用我选择的名称(服务名称)。我在Marathon应用程序API中没有看到任何明显的操作 有人知道怎么做吗 编辑: 我刚刚在mesos发现了关于集装箱船的消息。设置给定docker容器名称的mesos/marathon,docker,mesos,marathon,Docker,Mesos,Marathon,我有许多基于Docker的微服务,它们都需要相互对话。它们使用容器名称相互通信。因此,当我使用Docker Swarm或Kubernetes(w Flannel)运行此程序时,它们依赖Docker DNS将容器名称解析为IP地址 现在,我正试图用Mesos+Marathon运行这套相同的微服务,但我遇到了一个问题。当我启动所有的微服务时(使用Marathon app.app API),mesos给它们起了一个名字“mesos-some_long_hash”。当我在启动容器的机器上键入“docke
听起来好像不可能更改容器名称?这太可怕了!如果没有mesos/marathon的支持,任何人都无法命名自己的容器,那么他们该如何命名microservice体系结构呢?你不能用mesos命名容器
如果在没有mesos/marathon的情况下无法命名容器,那么人们如何实现微服务架构
当你开始一个微服务架构时,你应该把你的容器更多地看作是牛而不是宠物。就像您的服务器一样(请参阅和)。容器可以在任何时间任何地点启动和停止(您的Mesos代理之一),您不能给它们命名,因为在一台服务器上无法启动两个容器 想出了一个解决办法 因为我在自己的“用户”网络上运行Docker容器,因此依赖Docker DNS服务。我可以使用Docker run命令中的--network alias参数在Docker DNS服务中创建别名。我把我的服务名称放在那里,事情又开始运转了。即使容器中有各种“mesos uuid”名称 基本上,在app.appContainer.DockerContainer.parameter下添加一个键值对,其中键为“网络别名”,值为服务名称
看起来我也可以尝试Mesos DNS。同意,然后您可以使用一些工具,例如