同一宿主机下docker互相访问
what
该文档解决:docker下,altermanager收不到prometheus消息
事因,我在一个宿主机下建立了多个docker容器
- node-exporter
- prometheus
- grafana
- alertmanager
- timonwong/prometheus-webhook-dingtalk
这些服务之间会有一些互相访问,如prometheus可以发送数据给alertmanager来发送报警信息,alertmanager通过规则处理可以发送邮件,发送钉钉等方式告知用户,问题就出在prometheus的yml配置文档中:
1 | alerting: |
问题出在了prometheus的配置中访问了localhost端口,但这个并不是访问宿主机的9002的端口,而是访问的是docker内部的9002
端口
找到问题后,使用了宿主机ip+port的方式进行访问
how
查询了资料后,发现解决该问题的方法有:
- 宿主ip:port访问
- 容器ip访问
- link建立通信网络(单向,不推荐)–link xxx
- user-defined networks(docker dns server/bridge)
前两种不太推荐,因为如果容器ip更改或者宿主机ip更改就需要更新配置文档,第三种方法不太推荐,run 时候link只是单向的建立连接,第四种docker network create:
1 | //创建网络 |