簡體   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