docker容器如何在Mesos / Marathon设置中进行通信

时间:2015-08-31 18:14:36

标签: docker mesos marathon

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

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

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从站系统中创建docker。现在我怎样才能在容器之间进行通信? 我正在用马拉松框架启动docker工作。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

我建议您尝试consul进行服务发现。此外,由于您使用Mesos / Marathon,尝试Apollo可能也很有用,explained in the documentation也基于领事。