在具有非标准端口的 docker 中安装 influxdb

install influxdb in a docker with non standard port

我是 docker 的新人,我需要一些帮助。 我正在尝试在 docker 中安装 TICK。 Influxdb、Kapacitor 和 Chronograf 将在 dockers 内安装,但 telegraf 将安装在每台需要的机器上。 我的主机中的端口 8086 正在使用中,因此我将使用 8087 用于 influxdb。是否可以使用 -p 8087:8086 配置 influxdb dokcer?如果是这样,我应该在 conf 文件中配置哪个端口? Docker 撰写文件将是:

version: '3'

networks:
    TICK_network:

services:

influxdb:
    image: influxdb
    container_name: influxdb
    networks:
        TICK_network:
    ports:
        - "8087:8086"
        - "8083:8083"
    expose:
        - "8087"
        - "8083"
    hostname: influxdb
    volumes:
        - /var/lib/influxdb:/var/lib/influxdb
        - /etc/influxdb/influxdb.conf:/etc/influxdb/influxdb.conf:ro
    restart: unless-stopped

kapacitor:
    image: kapacitor
    container_name: kapacitor
    networks:
        TICK_network:
    links:
        - influxdb
    ports:
        - "9092:9092"
    expose:
        - "9092"
    hostname: kapacitor
    volumes:
        - /var/lib/kapacitor:/var/lib/kapacitor
        - /etc/kapacitor/kapacitor.conf:/etc/kapacitor/kapacitor.conf:ro
    restart: unless-stopped

chronograf:
    image: chronograf
    container_name: chronograf
    networks:
        TICK_network:
    links:
        - influxdb
        - kapacitor
    ports:
        - "8888:8888"
    expose:
        - "8888"
    hostname: chronograf
    volumes:
        - /var/lib/chronograf:/var/lib/chronograf
    restart: unless-stopped

influxdb.conf 被编辑为指向端口 8087

[http]
  enabled = true
  bind-address = ":8087"
  auth-enabled = true

Kapacitor.conf 和 telegraf.conf 也指向端口 8087。 但我收到以下错误:

电报日志:

W! [outputs.influxdb] when writing to [http://localhost:8087]: database "telegraf" creation failed: Post http://localhost:8087/query: EOF
E! [outputs.influxdb] when writing to [http://localhost:8087]: Post http://localhost:8087/write?db=tick: EOF
E! [agent] Error writing to outputs.influxdb: could not write any address

kapacitor 日志:

vl=error msg="encountered error" service=run err="open server: open service *influxdb.Service: failed to link subscription on startup: authorization failed"
run: open server: open service *influxdb.Service: failed to link subscription on startup: authorization failed

如果您想从 Docker 网络外部访问这些服务,您所做的是正确的,例如从主机访问 localhost:8087

但是,这在您的情况下是不正确的。由于你使用的是docker-compose,所有的服务都在同一个网络中,因此,你需要攻击influx监听的端口in Docker网络(右侧端口),即8086

但是,即使你这样做了,它仍然不起作用。为什么?因为您正在尝试从 Telegraf 容器访问 localhost。您需要将对 influx 的访问配置为 influxdb:8086,而不是 localhost:8087influxdb这里是容器的名字,比如你命名为ailb90,那么就是ailb90:8086

感谢您的回答。但是 telegraf 没有安装在容器中。这就是我使用 urls = ["http://localhost:8087"] 访问数据库的原因。

另一方面,kapacitor 安装在 docker 容器中。 influxdb 的连接是使用字符串 urls=["https://influxdb:8087"] 进行的。如果我在端口 8086 中 cinfigure kapacitor 它给出了一个连接错误(我认为这是因为 influxdb.conf 指向端口 8087):

lvl=error msg="failed to connect to InfluxDB, retrying..." service=influxdb cluster=default err="Get http://influxdb:8086/ping: dial tcp 172.0.0.2:8086: connect: connection refused"