繁体   English   中英

docker撰写网络版本3 –除非使用公共IP,否则容器无法互相看到?

[英]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

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

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

在此处输入图片说明

如果使用docker的网络:“主机”(或docker组成3,network_mode:“主机”),则可以使用直接设置,因为容器正在与主机共享网络。

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

我认为您错了,从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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM