在具有非标准端口的 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:8087
。 influxdb
这里是容器的名字,比如你命名为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"
我是 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:8087
。 influxdb
这里是容器的名字,比如你命名为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"