我在笔记本电脑上运行各种容器:
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发现在容器上工作(可疑!)
答案 0 :(得分:1)
如果您使用的是docker-machine
和docker 1.9,则引用容器的新方法是通过 discovery service ,例如 {{3} } ,加上consul等检查员服务。
另一种类似方法是使用 registrator 来管理这些服务(仍然与领事相结合)
在所有情况下,这意味着至少还有两个容器(一个用于领事主,一个用于检查,如群主或管理员)。
请参阅“swarm”。
优于--link
的优点是,您可以按任何顺序启动容器,它们可以停止并重新启动,并且它们仍然可以彼此看到。
--link
表示您必须首先启动您链接到的容器,并且它会停止并重新创建,--link
将不再有效。
此外,发现服务方法对localhost或多个主机有效。 (--link
仅适用于本地,不适用于主机)
答案 1 :(得分:1)
我现在开始做的是在我的localhost
中使用/etc/prometheus.yml
并docker run
--net=host
选项来使用所有服务。