Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
设置给定docker容器名称的mesos/marathon_Docker_Mesos_Marathon - Fatal编程技术网

设置给定docker容器名称的mesos/marathon

设置给定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

我有许多基于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发现了关于集装箱船的消息。


听起来好像不可能更改容器名称?这太可怕了!如果没有mesos/marathon的支持,任何人都无法命名自己的容器,那么他们该如何命名microservice体系结构呢?

你不能用mesos命名容器


如果在没有mesos/marathon的情况下无法命名容器,那么人们如何实现微服务架构


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

想出了一个解决办法

因为我在自己的“用户”网络上运行Docker容器,因此依赖Docker DNS服务。我可以使用Docker run命令中的--network alias参数在Docker DNS服务中创建别名。我把我的服务名称放在那里,事情又开始运转了。即使容器中有各种“mesos uuid”名称

基本上,在app.appContainer.DockerContainer.parameter下添加一个键值对,其中键为“网络别名”,值为服务名称


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

同意,然后您可以使用一些工具,例如