[英]Why docker containers can't access each other by ip within one network?
[英]docker compose network version 3 – containers can't see each other unless using public IP?
我运行的应用程序使用influxdb,chronograf(用于influx的webUI管理界面)和grafana(用于influx的图形UI界面)。
我的docker-compose fill将所有这3种服务作为服务并使用了版本3:
version: '3'
services:
grafana:
image: grafana/grafana
container_name: "grafana"
volumes:
- ${GRAFANA_DATA_PATH}:/var/lib/grafana
ports:
- "3000:3000"
networks:
- influxdb
influxdb:
image: influxdb:1.4.3-alpine
container_name: "influxdb"
volumes:
- ${INFLUXDB_DATA_PATH}:/var/lib/influxdb
ports:
- "8086:8086"
networks:
- influxdb
chronograf:
image: chronograf:1.4.0-alpine
container_name: "chronograf"
volumes:
- ${CHRONOGRAF_DATA_PATH}:/var/lib/chronograf
ports:
- "8888:8888"
networks:
- influxdb
entrypoint:
- chronograf
- --influxdb-url=http://influxdb:8086
networks:
influxdb:
一切似乎都正常,除了当我登录grafana(在端口3000上)并连接数据源(运行在8086上的influxdb)时,除非我使用服务器的公共IP地址,否则它将无法正常工作。
这些都不起作用:
- "http://localhost:8086"
- "http://127.0.0.1:8086"
- "http://influxdb:8086"
但这有效:
- "http://4.25.24.11:8086"
这是一个问题,因为我不想公开公开8086端口-只需其他容器即可访问它。 过去使用“链接”可以完成此操作,但已弃用,我正在尝试弄清楚如何在Docker版本3中执行此操作。
有趣的是,chronograf在启动时连接到influxdb时没有问题(如您在入口点中看到的):
--influxdb-url=http://influxdb:8086
我认为您错了,从chronograf可以只使用influxdb访问influxdb,因为这两个服务都在同一网络上,而influxdb只是chronograf的DNS记录。 您可以尝试使用此命令来验证该主机上的端口是否打开,如果显示“ open”,则表明通信应该正常
docker-compose run chronograf nc influxdb 8086 -v
我还将在您的docker-compose.yml中添加depends_on ,并且influxdb端口不必公开,我宁愿也使用command代替entrypoint
version: '3'
services:
grafana:
image: grafana/grafana
depends_on: [influxdb]
ports:
- "3000:3000"
networks:
- influxdb
influxdb:
image: influxdb:1.4.3-alpine
networks:
- influxdb
chronograf:
image: chronograf:1.4.0-alpine
depends_on: [influxdb]
ports:
- "8888:8888"
networks:
- influxdb
command:
- chronograf
- --influxdb-url=http://influxdb:8086
networks:
influxdb:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.