Docker localhost IP

时间:2015-11-16 00:42:54

标签: docker prometheus

我在笔记本电脑上运行各种容器:

X1C3:~$ docker ps
CONTAINER ID        IMAGE                    COMMAND                  CREATED             STATUS              PORTS                    NAMES
4daccb82531d        prom/prometheus:latest   "/bin/prometheus -con"   12 hours ago        Up 12 hours         0.0.0.0:9090->9090/tcp   berserk_goldstine
32c2c31e0d5f        prom/blackbox-exporter   "/bin/go-run -config."   12 hours ago        Up 12 hours         0.0.0.0:9115->9115/tcp   goofy_wescoff
7490523a3bc7        prom/node-exporter       "/bin/go-run"            2 days ago          Up 2 days                                    sharp_albattani
61303633672b        prom/alertmanager        "/bin/go-run -config."   2 days ago          Up 2 days           0.0.0.0:9093->9093/tcp   goofy_kare
89ce4f49c426        grafana/grafana          "/usr/sbin/grafana-se"   2 days ago          Up 2 days           0.0.0.0:3000->3000/tcp   berserk_wozniak

至少从其中一个容器prom/prometheus开始,我需要与其他容器进行通信。

例如,这是一个典型的配置:

global:
 scrape_interval: 10s
 evaluation_interval: 10s
scrape_configs:
 - job_name: 'prometheus'
   target_groups:
    - targets:
      - localhost:9090
      - 192.168.88.161:9100
 - job_name: 'blackbox'
   metrics_path: /probe
   params:
     module: [icmp]
     target: [8.8.8.8]
   target_groups:
     - targets:
       - 192.168.88.161:9115

我发现我需要指定192.168.88.161,因为localhost不起作用。我猜因为localhost似乎是该容器的本地。然而192.168.88.161令人讨厌的方面是,当我在家时,它只是IP。我的 IP更改,因为我一直在变化。那么如何处理这个问题?

我推测使用X1C3.local,但我没有看到没有bonjour发现在容器上工作(可疑!)

2 个答案:

答案 0 :(得分:1)

如果您使用的是docker-machine和docker 1.9,则引用容器的新方法是通过 discovery service ,例如 {{3} } ,加上consul等检查员服务。

另一种类似方法是使用 registrator 来管理这些服务(仍然与领事相结合)

在所有情况下,这意味着至少还有两个容器(一个用于领事主,一个用于检查,如群主或管理员)。
请参阅“swarm”。

优于--link的优点是,您可以按任何顺序启动容器,它们可以停止并重新启动,并且它们仍然可以彼此看到。
--link表示您必须首先启动您链接到的容器,并且它会停止并重新创建,--link将不再有效。

此外,发现服务方法对localhost或多个主机有效。 (--link仅适用于本地,不适用于主机)

答案 1 :(得分:1)

我现在开始做的是在我的localhost中使用/etc/prometheus.ymldocker run --net=host选项来使用所有服务。