无法连接Docker自定义网桥网络:Prometheus无法抓取cAdvisor指标
Docker自定义网桥内容器连接问题排查与解决
1. 修复配置中的两处关键错误
你的问题主要来自Prometheus配置文件的两个问题:
- 目标地址错误:在Docker自定义网桥网络中,
localhost仅指向容器自身,而非同网络内的其他容器。你配置里的localhost:8080会让Prometheus尝试连接自己的8080端口,而非cAdvisor。
修改方法:将prometheus.yml中cadvisor任务的targets改为容器名+端口:
Docker自定义网桥默认支持容器名的DNS解析,同一网络内的容器可以直接通过容器名通信。- job_name: cadvisor static_configs: - targets: ['cadvisor:8080'] - 配置语法错误:你的
global段中scrape_interval: 15sscrape_configs:存在拼写错误,15s后没有换行就直接拼接了scrape_configs,会导致Prometheus无法正确加载配置。修正后应为:global: evaluation_interval: 15s scrape_interval: 15s scrape_configs: # ... 后续配置保持不变
2. 容器网络连通性验证步骤
如果修改配置后仍有问题,可以按以下步骤排查:
- 验证容器间DNS解析:进入Prometheus容器,ping cAdvisor的容器名,确认解析正常:
docker exec -it prometheus-server ping cadvisor - 测试端口连通性:用curl测试cAdvisor的服务端口:
如果能返回cAdvisor的页面内容,说明网络和服务都正常。docker exec -it prometheus-server curl cadvisor:8080 - 确认容器在同一网络:检查自定义网桥的容器列表,确保两个容器都已加入:
在输出的docker network inspect prometheus-networkContainers节点下,应同时看到prometheus-server和cadvisor的信息。
3. 其他排查点
- 检查cAdvisor容器的8080端口是否正常监听:进入cAdvisor容器,执行
ss -tulpn(若没有ss工具,可先安装apt install iproute2),确认8080端口处于监听状态。 - 确认cAdvisor容器启动日志无错误:查看日志排查服务是否正常启动:
docker logs cadvisor
内容的提问来源于stack exchange,提问作者ben
相关产品推荐
相关产品推荐

