![](/img/trans.png)
[英]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.