gpt4 book ai didi

docker compose network version 3 – 除非使用公共(public) IP,否则容器不能互相看到?

转载 作者:行者123 更新时间:2023-12-02 19:07:10 25 4
gpt4 key购买 nike

我有一个正在运行的应用程序,它使用 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)时,除非我使用服务器的公共(public) 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

最佳答案

在发布问题后大约 5 分钟想通了(它特定于 Grafana):将 HTTP 设置中的“访问”字段更改为“代理”(而不是“直接”)。

希望这可以节省一些时间:

enter image description here

如果使用 docker 的 net:"host"(或 docker compose 3, network_mode:"host"),则可以使用直接设置,因为容器与主机共享网络。

但是,如果使用命名网络(例如在上面的 compose 文件中),您可能需要在任何时候在 URL 字符串中使用网络名称时使用代理。

关于docker compose network version 3 – 除非使用公共(public) IP,否则容器不能互相看到?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48591367/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com