Поскольку док. официального Изображение 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, как я указал ранее, но он не существует. Есть ли какая-то концепция, которую мне не хватает? Запрос делается? Почему не существует Influx на порту 8087?
@DavidMaze Я не понимаю, разве я не изменил это с параметром -p при запуске контейнера? Я новичок в Docker, поэтому могу везде путать концепции.
Стандартный порт для InfluxDB - 8086 (посмотрите документация).
Если вы хотите вместо этого использовать порт 8087, я считаю, что самый простой способ - запустить контейнер докеров следующим образом:
docker run --name=influxdb3 -p 8087:8086 influxdb
Образы 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
также указала стандартный номер порта.
Ох, я понял. Огромное спасибо!
Читая ссылку, все примеры используют порт 8086, а не 8087? Это похоже на стандартный порт, который использует сервер?