我已经为ApacheAirAvata创建了两个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条答案
按热度按时间ua4mk5z41#
您描述的问题可以通过使用服务发现机制(如mesos dns或marathon事件总线)和一些定制工具(即您开发的脚本)来解决。基本上,您需要编写一个在容器b内部运行的脚本,并使用服务发现来找出容器a的ip地址,修改配置文件,还可能重新启动服务。
jjhzyzn02#
我建议你试试领事服务发现。另外,因为你使用的是mesos/马拉松,所以尝试阿波罗可能会有用,阿波罗也是基于领事的。