Ошибка привязки порта при подключении к локальному брокеру Kafka из локального приемника в контейнере Docker - PullRequest
0 голосов
/ 10 декабря 2018

У меня работает Zookeeper на порту 2181 (по умолчанию) и сервер Kafka, прослушивающий порт 9090 на моем локальном компьютере.

Когда я запускаю локально CLI-интерфейс kafka или локальные приложения для потребителей / производителей, у меня нетпроблема подключения.

Затем я пытаюсь объединить потребителя Kafka в контейнер Docker и запустить этот контейнер Docker локально, например: docker run -p 9092:9092 --rm <DOCKER_IMAGE>

. Это выдает ошибку: (Error starting userland proxy: Bind for 0.0.0.0:9090 failed: port is already allocated.)

* 1010.* Это имеет смысл, поскольку Kafka Server привязан к 9092, как показано в nmap -p 9092 localhost: PORT STATE SERVICE 9092/tcp open XmlIpcRegSvc

У меня не возникнет проблем с отображением контейнера Docker на другой порт через -p XXX:9090, но как это сделать?Я получаю локальный сервер Kafka для прослушивания этого нового порта без привязки к нему?

1 Ответ

0 голосов
/ 10 декабря 2018

Итак, после некоторых копаний я нашел несколько вариантов. (Примечание: я на Mac, поэтому # 2 может не подходить для всех).

  1. Включить --network=host в команду docker run (как видно * 1008)* here ).
  2. Ни в коем случае не изменяйте команду docker run, а вместо этого подключайтесь к брокеру на host.docker.internal:9092 внутри кода потребителя / издателя контейнера.Как видно здесь .

Мне не удалось заставить № 1 работать на меня (я уверен, что это ошибка пользователя).Однако # 2 работал отлично и просто требовал изменения конфигурации внутри контейнера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...