невозможно запустить kafka и zookeeper с помощью docker;порты 9092 и 2181 уже выделены - PullRequest
0 голосов
/ 27 октября 2018

Я пытаюсь настроить kafka и zookeeper с помощью этого файла Docker

    version: '2'

services:
  kafka:
    image: landoop/fast-data-dev:cp3.3.0
    hostname: kafka-host
    ports:
      - 29092:29092
      - 3030:3030                 # Landoop UI
      - 8081-8083:8081-8083       # REST Proxy, Schema Registry, Kafka Connect ports
      - 9581-9585:9581-9585       # JMX Ports
      - 2181:2181                 # Zookeeper
      - 9092:9092                 # Kafka Broker
    environment:
      ADV_HOST: 127.0.0.1         
      RUNTESTS: 0                 
      FORWARDLOGS: 0              
      SAMPLEDATA: 0  

но я продолжаю получать это сообщение об ошибке

Cannot start service kafka: b'driver failed programming external connectivity on endpoint kafka-docker_kafka_1 (a741da2d21a00bb752fc169d579fa39bcdeef0cc88ec560d2e93b8fd287b8b5a): Error starting userland proxy: Bind for 0.0.0.0:9092 failed: port is already allocated'

даже после того, как я удалю все изображения и контейнеры ...

с "sudo lsof -i tcp:9092"

Я вижу, что какой-то процесс продолжается ... но даже после того, как я их убил, с помощью kill -9 PID появляются некоторые другие ...

Ответы [ 2 ]

0 голосов
/ 28 октября 2018

Я решил проблему;kafka и zookeeper фактически уже были установлены локально, а brew запускал их в фоновом режиме ... когда я их удалил, все было хорошо!

0 голосов
/ 27 октября 2018

Кажется, что один из ваших контейнеров все еще использует порт 9092 (как показывает sudo lsof -i tcp:9092).Запустите docker ps, чтобы убедиться, что с этим портом не запущен контейнер.

Более того, остановка контейнеров с помощью команды kill -9 - неправильный способ:

  • , если вы 'Используя docker-compose (как показывает ваш пример), вы можете запустить docker-compose down, чтобы остановить все службы (следовательно, все контейнеры, определенные в вашем файле).В качестве альтернативы, если вы хотите закрыть контейнер, используя только команду docker, вам нужно запустить docker stop <container_id_or_name>, но я не рекомендую, чтобы вы использовали docker-compose
  • при выдаче kill -9 команда, вы испытываете, что контейнеры перезапускаются снова и снова, потому что вы, вероятно, определили политику перезапуска для вашей службы (https://docs.docker.com/compose/compose-file/compose-file-v2/#restart). Контейнер запустился после того, как другой вышел (вызванный kill -9) используетпорты те же, что и у предыдущего, поэтому порт 9092 всегда используется
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...