首页 > 解决方案 > 无法更改 InfluxDB Docker 容器的端口

问题描述

作为医生。官方的InfluxDB 图像表明,我正在创建一个 InfluxDB 容器,如下所示:

docker run --name=influxdb3 -p 8087:8087 influxdb

然而,当我看到它的细节时,我得到:

madmin’s-MacBook-Pro:sentinel-be jscherman$ docker container ls
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                              NAMES
f895d3e35c41        influxdb            "/entrypoint.sh infl…"   9 seconds ago       Up 7 seconds        8086/tcp, 0.0.0.0:8087->8087/tcp   influxdb3

为什么有很多端口被使用?鉴于我从未指定过,为什么要使用端口 8086?此外,如果我尝试对其进行查询,我会得到以下信息:

madmin’s-MacBook-Pro:sentinel-be jscherman$ curl -G http://localhost:8087/query --data-urlencode "q=CREATE DATABASE mydb"
curl: (52) Empty reply from server
madmin’s-MacBook-Pro:sentinel-be jscherman$ docker exec -ti influxdb3 /bin/bash
> root@f895d3e35c41:/# influx -port 8087
Failed to connect to http://localhost:8087: Get http://localhost:8087/ping: dial tcp 127.0.0.1:8087: connect: connection refused
Please check your connection settings and ensure 'influxd' is running.
root@f895d3e35c41:/#

我尝试查询一些东西,然后我没有得到任何响应,所以我尝试从容器连接到我之前指定的流入端口 8087,但它不存在。有什么我想念的概念吗?查询完成了吗?为什么8087端口不存在Influx?

标签: dockerinfluxdb

解决方案


Docker 镜像通常运行服务器。通常,端口号在 Docker 应用程序或映像中是固定的:例如,提供基于 HTTP 的服务的服务器可能总是在端口 80、8000 或 8080 上为其提供服务。对于 InfluxDB,它的“标准”端口号似乎是 8086。

当您docker run -p是容器时,您可以指定不同的端口号,但您必须将其重新映射到服务器正在侦听的容器中的端口号。如果您希望主机上的端口 8087 到达容器中的端口 8086,您需要指定

docker run --name=influxdb3 -p 8087:8086 influxdb

只更改第一个端口号。

Dockerfile 可以通过指令声明服务器将侦听的特定端口EXPOSE。这在实践中并不是很有用——暴露的端口不会自动发布到主机,您可以发布未暴露的端口——但这就是您的docker ps命令也列出标准端口号的原因。


推荐阅读