Я пытаюсь локально запустить Kafka в контейнере Docker, но, похоже, комбинация опций неверна.
Я работаю в Windows 10, Docker ce версии 2.0.0.3 (31259).
Что я делаю
запустить Zookeeper в контейнере Docker
docker run -d --name=zookeeper1 --network=host --env-file=zookeeper_options confluentinc/cp-zookeeper
Я опущу файл среды, поскольку zookeeper работает нормально.
запустить Kafka в контейнере Docker
docker run -d --network=host --name=kafka --env-file=kafka_options confluentinc/cp-kafka
с файлом kafka_options
, содержащим
KAFKA_ZOOKEEPER_CONNECT=zookeeper1:2181
KAFKA_LISTENERS=PLAINTEXT://localhost:9092
KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:29092
Попробуйте получить список метаданных
kafkacat -b localhost:29092 -L
(это я делаю в подсистеме Ubuntu в Windows 10, остальные я запускаю из PowerShell.У меня также есть небольшое приложение Java Kafka, которое демонстрирует то же поведение, хотя)
В результате
% ОШИБКА: не удалось получить метаданные: Локальный: ошибка транспорта брокера
То, что я прочитал
Очевидно, Быстрый старт с документацией Docker , который использует docker-compose, который мне не нужен;а также раздел Docker документации .
Помимо этого, наиболее заметным является этот пост Робина, объясняющий концепцию рекламируемых слушателей , но я все еще не могупосмотрите, что я делаю неправильно.
Я также обнаружил эту проблему о разнице в Windows , которая не позволяет вам использовать официальные шаги быстрого запуска в Windows;это побудит меня попробовать альтернативный запуск с отдельной сетью.
Отдельная сеть
Выполните следующие действия в этом выпуске:
docker network create confluent
docker run -d --name=zookeeper1 --network=confluent -p 22181:2181 --env-file=zookeeper_options confluentinc/cp-zookeeper
docker run -d --network=confluent --name=kafka -p 29092:9092 --env-file=kafka_options confluentinc/cp-kafka
kafkacat -b localhost:29092 -L
Это меняет результат на
% ОШИБКА: не удалось получить метаданные: локально: время ожидания истекло
Похоже, что по крайней мере он подключается, но это не очень помогает в конце.
Вопрос в том, что я делаю не так?Это параметры конфигурации Kafka или проблема Docker, о которой я не знаю?
EDIT:
Он работает с образец docker-compose.yml здесь , но разве мы не можем запускать контейнеры отдельно?