Mesos从属IP,用于Marathon启动的(docker容器)服务实例

我有一个docker形象,我想通过Mesos / Marathon推出一些实例。

我在docker使用BRIDGEnetworking,我想通过在容器正在启动,启动容器,通过env的mesos奴隶/docker工人主机的“公共”(即不是容器的docker0networking)地址var或param,所以我可以在应用程序响应中通告这个ip(应用程序是一个Cassandra节点,我将在这个地址中的cassandra.yaml中填充broadcast_address

我的理解是,我可以让Mesos将此地址上的任何特定端口(在configuration的范围内)转发回运行容器的docker0地址。 如果这是真的,我可以保证应用程序实例(Cassandra节点)没有从这个奴隶移动,有一些约束,我可以有一个mesos预定的Cassandra集群。

我的问题是:我怎么得到奴隶(docker主机)的IP地址到马拉松应用程序实例,因为它正在启动?

在Marathonfind合适的主机之前,您不知道IP地址。 但是,在Mesos从站启动任务时,某些属性存储在ENVvariables中:

 ... ULIMIT=-n 8192 HOST=slave01.example.com MESOS_SLAVE_PID=slave(1)@192.168.1.2:5051 MARATHON_APP_RESOURCE_CPUS=0.1 MESOS_TASK_ID=dummy.eb6e1d9a-c2f0-11e5-a58b-00259057db2f 

如果主机名MESOS_SLAVE_PID ,可以使用HOSTvariables或从MESOS_SLAVE_PID提取IP地址。

如果使用--ip=192.168.1.2启动mesos-slave ,则HOSTLIBPROCESS_IP ENVvariables将被设置为主机地址。 对于Mesosphere包:

 echo "192.168.1.2" > /etc/mesos-slave/ip 

并重新启动从机。

还有一个select是解决Docker容器内的代理IP:

 AGENT_IP=$(getent hosts ${HOST} | awk '{ print $1 }')