docker集装箱如何在Mesos / Marathon设置中进行通信

我为Apache Airavata创build了两个docker容器。 假设它们是容器A和容器B.容器B依赖于容器A.启动容器A后,必须将A的IP地址作为环境variables提供给容器B.现在,容器B的启动脚本将更改configuration文件对于容器B.在这个变化之后,容器B可以与容器A通信。

当我在本地docker环境中进行设置时,我手动创build了容器,并在创build容器时传递了所需的值。

docker run -i -d --name pga --env SERVER_HOST=172.17.1.84 --env SERVER_PORT=8930 -p 8787:80 -t pga:test 

在Mesos / marathon环境中,可以在任何Mesos从站系统中创builddocker。 现在我怎么能让容器之间发生沟通呢? 我正在用马拉松框架启动docker工作。

您所描述的问题可以通过使用服务发现机制(如Mesos DNS或Marathon Event Bus )和一些自定义工具(即由您开发的脚本)来解决。 基本上,您需要编写一个在容器B内部运行的脚本,并使用服务发现来查找容器A的IP地址,修改configuration文件,并可能重新启动服务。

我build议您尝试领事服务发现。 同样,因为你使用Mesos / Marathon,所以也可以尝试Apollo ,这也是基于领事。