无法更改 InfluxDB Docker 容器的端口
Cannot change port of InfluxDB Docker container
作为医生。官方的 InfluxDB image 表示,我正在创建一个 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 上的 influx,但它不存在。有什么我想念的概念吗?查询正在完成吗?为什么8087端口不存在Influx?
InfluxDB 的标准端口是 8086(查看 documentation)。
如果您想改用端口 8087,我认为最简单的方法是像这样启动 docker 容器:
docker run --name=influxdb3 -p 8087:8086 influxdb
Docker 个图像通常 运行 个服务器。通常端口号在 Docker 应用程序或图像中是固定的:例如,提供基于 HTTP 的服务的服务器可能始终在端口 80 或 8000 或 8080 上提供服务。在 InfluxDB 的情况下,它的 "standard" 端口号看起来是 8086.
当你docker run -p
一个容器时,你可以指定一个不同的端口号,但你必须将它重新映射到服务器正在侦听的容器中的端口号。如果你想让主机上的 8087 端口到达容器中的 8086 端口,你需要指定
docker run --name=influxdb3 -p 8087:8086 influxdb
只改变第一个端口号。
一个Docker文件可以声明服务器将通过EXPOSE
指令侦听的特定端口。这在实践中没有多大用处——暴露的端口不会自动发布到主机,你可以发布未暴露的端口——但这就是为什么你的 docker ps
命令将标准端口号列为嗯
作为医生。官方的 InfluxDB image 表示,我正在创建一个 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 上的 influx,但它不存在。有什么我想念的概念吗?查询正在完成吗?为什么8087端口不存在Influx?
InfluxDB 的标准端口是 8086(查看 documentation)。
如果您想改用端口 8087,我认为最简单的方法是像这样启动 docker 容器:
docker run --name=influxdb3 -p 8087:8086 influxdb
Docker 个图像通常 运行 个服务器。通常端口号在 Docker 应用程序或图像中是固定的:例如,提供基于 HTTP 的服务的服务器可能始终在端口 80 或 8000 或 8080 上提供服务。在 InfluxDB 的情况下,它的 "standard" 端口号看起来是 8086.
当你docker run -p
一个容器时,你可以指定一个不同的端口号,但你必须将它重新映射到服务器正在侦听的容器中的端口号。如果你想让主机上的 8087 端口到达容器中的 8086 端口,你需要指定
docker run --name=influxdb3 -p 8087:8086 influxdb
只改变第一个端口号。
一个Docker文件可以声明服务器将通过EXPOSE
指令侦听的特定端口。这在实践中没有多大用处——暴露的端口不会自动发布到主机,你可以发布未暴露的端口——但这就是为什么你的 docker ps
命令将标准端口号列为嗯