Невозможно изменить порт контейнера Docker InfluxDB

Поскольку док. официального Изображение 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?

Читая ссылку, все примеры используют порт 8086, а не 8087? Это похоже на стандартный порт, который использует сервер?

David Maze 26.10.2018 15:36

@DavidMaze Я не понимаю, разве я не изменил это с параметром -p при запуске контейнера? Я новичок в Docker, поэтому могу везде путать концепции.

jscherman 26.10.2018 15:46
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
0
2
1 451
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Стандартный порт для 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 также указала стандартный номер порта.

Ох, я понял. Огромное спасибо!

jscherman 26.10.2018 16:03

Другие вопросы по теме