如何使用instanceip和container-port访问在同一实例中运行的docker容器服务

时间:2018-02-07 06:43:11

标签: docker docker-compose prometheus

以下是我所面临问题的概述。

假设我有一个 x.x.x.x 实例,并且我正在运行以下服务。

  1. 在9090运行的prometheus的Docker容器
  2. 在9093中运行的alertmanager的Docker容器
  3. 服务运行良好我可以使用实例网址及其IP来访问服务。

    问题:

    我的服务1(Prometheus)需要使用 hosturl:ip 访问service2(alertmanager),即XXXX:9090是在尝试访问XXXX时:9093不可能抛出以下错误。

    我的测试方式: 进入service1容器并试图telnet它

    telnet: can't connect to remote host (X.X.X.X): No route to host
    

    我不确定但是已经意识到这是由于docker防火墙问题造成的。如果是,那么可以做什么或该方案的可能解决方案是什么。如何使用<使service1可以访问service2 hostIP:port>

    docker ps结果

    CONTAINER ID        IMAGE                         COMMAND                  CREATED             STATUS              PORTS                               NAMES
    0ac39e87eb27        prom/alertmanager             "/bin/alertmanager --"   53 minutes ago      Up 53 minutes       0.0.0.0:9093->9093/tcp              alertmanager_1
    25a7de42d57f        prom/prometheus               "/bin/prometheus --co"   53 minutes ago      Up 53 minutes       0.0.0.0:9090->9090/tcp
    prometheus
    

    注: 我使用docker-compose运行服务。所以docker-compose解决方案会更受欢迎

1 个答案:

答案 0 :(得分:0)

您好像没有关联自己的服务。正确的解决方案是从同一个docker-compose文件运行这两个服务并将它们链接到一起。您可以使用docker-compose服务名称从Prometheus访问另一个容器中的Alertmanager。